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