C# 入門 & 実践 / C sharp

5-13. Menu - 3 - StatusStrip ToolStrip


ステータスバーです。
メニューを開いてポイントが乗っているときにステータスバーに解説を表示してみます。



StatusStripを配置して
statusLabel( toolStripStatusLabel1 ) を追加します。

プロパティのtextを消しておきます。

2つのイベントを利用します。
MouseEnter マウスが領域に入ったときに発生。
MouseLeave マウスが領域から出たときに発生。

この2つで利用するメソッドを作っておき、ハンドラーに入れます。

5-13で作成したMenuStripをの
メインの1 メインの2
を利用してみたいと思います。

        public Form1()
        {
            InitializeComponent();
            this.main1ToolStripMenuItem.MouseEnter += new System.EventHandler(this.myMouseEnter);
            this.main2ToolStripMenuItem.MouseEnter += new System.EventHandler(this.myMouseEnter);
            this.main1ToolStripMenuItem.MouseLeave += new System.EventHandler(this.myMouseLeave);
            this.main2ToolStripMenuItem.MouseLeave += new System.EventHandler(this.myMouseLeave);
        }

        // マウスが乗ったらステータスバーの表示を変える。
        private void myMouseEnter(object sender, EventArgs e)
        {

            // 何に乗ったか?
            switch (sender.ToString())
            {
                case @"メインの1 (&1)":
                    this.toolStripStatusLabel1.Text = "これはメインの1です!";
                    break;
                case @"メインの2 (&2)":
                    this.toolStripStatusLabel1.Text = "これはメインの2です!";
                    break;
            }
            // 表示させる
            toolStripStatusLabel1.Visible = true;
        }

        // マウスが抜けたらステータスバーの表示を戻す。
        private void myMouseLeave(object sender, EventArgs e)
        {
              // 非表示にする
              toolStripStatusLabel1.Visible = false;
        }
{ toolStripProgressBar1.Visible = true; toolStripProgressBar1.Step = 1; for (int i = 0; i <= 100; i++) { // プログレスバーを進める! toolStripProgressBar1.PerformStep(); // 0.1 秒待機 // ステータスバーに進度を表示 toolStripStatusLabel1.Text = i.ToString() + " % done"; // toolStripStatusLabel だけを Refresh できない・・・ statusStrip1.Refresh(); if ((i % 10) == 0) { int ix = (int)(i/10); label3.Text = ix.ToString(); label3.Refresh(); } Thread.Sleep(100); } MessageBox.Show("100 % Done !!!"); // 終了 toolStripProgressBar1.Visible = false; toolStripProgressBar1.Value = 0; toolStripStatusLabel1.Text = ""; label3.Text = "0"; } テストなので、名前とかそのまま適当に使ってきましたが
そろそろ名前を独自のものにしないといけない感じが・・・

ボタンをクリックすると



とこんな感じになります。

ToolStrip を継承して StatusStrip になっているようなのですが
いまいち違いがわかりません。
ToolStripの方が、使えるコントロールは多いし・・・
いつかわかる日が来るのでしょうか?

とりあえずわかっていることとしては、
ToolStripContainerを利用した際に
ToolStripは移動できるが、StatusStripは移動できない・・・
他にも違いはあるのでしょうが・・・

使い方としてはStatusStripは一つのフォームに一つ下に付けるということでいいと思うのですが。
それ以外はToolStripを使っておいていいのかな~



5-12. Menu - 2 - ContextMenuStrip « 5. Windows アプリケーション


C# 入門 & 実践 / C sharp