C#

C# ツールバーを作る(3/3)

前回に引き続き、ツールバーの土台になるToolStripの上に乗せることができるコントロールを紹介していきます。

 

コンボボックス(ToolStripComboBox)

コンボボックスは、テキストボックスとドロップダウンリストによるコントロールで、右の矢印ボタンをクリックすると、ドロップダウンリストが表示されるという動きは ToolStripSplitButton や ToolStripDropDownButton と同じです。

サンプルは、下記のようになります。

private System.Windows.Forms.ToolStrip toolStrip1;  // ツールバーの土台となるオブジェクト
private System.Windows.Forms.ToolStripButton toolStripButton1;  // ツールバーのボタン1

private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;    // ツールバーのセパレータ
private System.Windows.Forms.ToolStripComboBox toolStripComboBox1;    // ツールバーのコンボボックス

private void frmMain_Load(object sender, EventArgs e)
{
    // フォームをロードした時の処理
    // レイアウトを一時停止
    this.SuspendLayout();

    // ToolStripクラスを生成します
    this.toolStrip1 = new ToolStrip();

    // ツールバーのレイアウトを一時停止
    this.toolStrip1.SuspendLayout();

    //
    // ツールバーの中に追加するコントロールを生成する
    // ここから --->

    // ToolStripButtonを作成
    this.toolStripButton1 = new ToolStripButton();
    // テキストを設定
    this.toolStripButton1.Text = "開く(&O)";
    // 画像を設定
    this.toolStripButton1.Image = Image.FromFile(@"btn_open.gif");
    // 画像だけを表示するボタンにします
    this.toolStripButton1.DisplayStyle = ToolStripItemDisplayStyle.Image;

    // ToolStripにボタンを追加します
    this.toolStrip1.Items.Add(this.toolStripButton1);

    // ToolStripSeparatorを作成
    this.toolStripSeparator1 = new ToolStripSeparator();
    // ToolStripにセパレータを追加します
    this.toolStrip1.Items.Add(this.toolStripSeparator1);

    // ToolStripDropDownButtonを作成する
    this.toolStripComboBox1 = new ToolStripComboBox("コンボ");
    // ドロップダウンのリストを用意します
    this.toolStripComboBox1.Items.Add("選択肢1");
    this.toolStripComboBox1.Items.Add("選択肢2");
    this.toolStripComboBox1.Items.Add("選択肢3");
    // ToolStripにコンボボックスを追加します
    this.toolStrip1.Items.Add(this.toolStripComboBox1);

    // フォームにToolStrip(ツールバー)を追加
    this.Controls.Add(this.toolStrip1);

    // ---> ここまで
    // ツールバーの中に追加するコントロールを生成する
    //

    // ツールバーのレイアウトを再開
    this.toolStrip1.ResumeLayout(false);
    this.toolStrip1.PerformLayout();

    // レイアウトを再開
    this.ResumeLayout(false);
    this.PerformLayout();

}

 

テキストボックス(ToolStripTextBox)

その名の通り、テキストボックスです。

サンプルは、下記のようになります。

private System.Windows.Forms.ToolStrip toolStrip1;  // ツールバーの土台となるオブジェクト
private System.Windows.Forms.ToolStripButton toolStripButton1;  // ツールバーのボタン1

private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;    // ツールバーのセパレータ
private System.Windows.Forms.ToolStripTextBox toolStripTextBox1;    // ツールバーのテキストボックス

private void frmMain_Load(object sender, EventArgs e)
{
    // フォームをロードした時の処理
    // レイアウトを一時停止
    this.SuspendLayout();

    // ToolStripクラスを生成します
    this.toolStrip1 = new ToolStrip();

    // ツールバーのレイアウトを一時停止
    this.toolStrip1.SuspendLayout();

    //
    // ツールバーの中に追加するコントロールを生成する
    // ここから --->

    // ToolStripButtonを作成
    this.toolStripButton1 = new ToolStripButton();
    // テキストを設定
    this.toolStripButton1.Text = "開く(&O)";
    // 画像を設定
    this.toolStripButton1.Image = Image.FromFile(@"btn_open.gif");
    // 画像だけを表示するボタンにします
    this.toolStripButton1.DisplayStyle = ToolStripItemDisplayStyle.Image;

    // ToolStripにボタンを追加します
    this.toolStrip1.Items.Add(this.toolStripButton1);

    // ToolStripSeparatorを作成
    this.toolStripSeparator1 = new ToolStripSeparator();
    // ToolStripにセパレータを追加します
    this.toolStrip1.Items.Add(this.toolStripSeparator1);

    // ToolStripTextBoxを作成する
    //this.toolStripTextBox1 = new ToolStripTextBox("テキスト");    // <--こうやっても初期表示でテキストと表示されません
    this.toolStripTextBox1 = new ToolStripTextBox();
    toolStripTextBox1.Text = "てきすと";
    // ToolStripにコンボボックスを追加します
    this.toolStrip1.Items.Add(this.toolStripTextBox1);

    // フォームにToolStrip(ツールバー)を追加
    this.Controls.Add(this.toolStrip1);

    // ---> ここまで
    // ツールバーの中に追加するコントロールを生成する
    //

    // ツールバーのレイアウトを再開
    this.toolStrip1.ResumeLayout(false);
    this.toolStrip1.PerformLayout();

    // レイアウトを再開
    this.ResumeLayout(false);
    this.PerformLayout();

}

 

このサンプルにはコメントアウトされている部分があります。
これは、コンストラクタの引数に文字列が渡せるので、渡してみたときのコードです。
下記のように変更して実行しても、コメントに書いてあるとおり、テキストボックスは「空」の状態で表示されます。

    this.toolStripTextBox1 = new ToolStripTextBox("テキスト");    // <--こうやっても初期表示でテキストと表示されません
    //this.toolStripTextBox1 = new ToolStripTextBox();
    //toolStripTextBox1.Text = "てきすと";

 

プログレスバー(ToolStripProgressBar)

ツールバー内にプログレスバーを表示させることができます。
処理の進捗状況やパフォーマンスを表示するときなどに使えそうです

サンプルは、下記のようになります。

private System.Windows.Forms.ToolStrip toolStrip1;  // ツールバーの土台となるオブジェクト
private System.Windows.Forms.ToolStripButton toolStripButton1;  // ツールバーのボタン1

private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;    // ツールバーのセパレータ
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;    // ツールバーのプログレスバー

private void frmMain_Load(object sender, EventArgs e)
{
    // フォームをロードした時の処理
    // レイアウトを一時停止
    this.SuspendLayout();

    // ToolStripクラスを生成します
    this.toolStrip1 = new ToolStrip();

    // ツールバーのレイアウトを一時停止
    this.toolStrip1.SuspendLayout();

    //
    // ツールバーの中に追加するコントロールを生成する
    // ここから --->

    // ToolStripButtonを作成
    this.toolStripButton1 = new ToolStripButton();
    // テキストを設定
    this.toolStripButton1.Text = "開く(&O)";
    // 画像を設定
    this.toolStripButton1.Image = Image.FromFile(@"btn_open.gif");
    // 画像だけを表示するボタンにします
    this.toolStripButton1.DisplayStyle = ToolStripItemDisplayStyle.Image;

    // ToolStripにボタンを追加します
    this.toolStrip1.Items.Add(this.toolStripButton1);

    // ToolStripSeparatorを作成
    this.toolStripSeparator1 = new ToolStripSeparator();
    // ToolStripにセパレータを追加します
    this.toolStrip1.Items.Add(this.toolStripSeparator1);

    // ToolStripProgressBarを作成する
    this.toolStripProgressBar1 = new ToolStripProgressBar();
    toolStripProgressBar1.ToolTipText = "プログレスバー";
    toolStripProgressBar1.Minimum = 0;
    toolStripProgressBar1.Maximum = 100;
    toolStripProgressBar1.Value = 25;

    // ToolStripにプログレスバーを追加します
    this.toolStrip1.Items.Add(this.toolStripProgressBar1);

    // フォームにToolStrip(ツールバー)を追加
    this.Controls.Add(this.toolStrip1);

    // ---> ここまで
    // ツールバーの中に追加するコントロールを生成する
    //

    // ツールバーのレイアウトを再開
    this.toolStrip1.ResumeLayout(false);
    this.toolStrip1.PerformLayout();

    // レイアウトを再開
    this.ResumeLayout(false);
    this.PerformLayout();

}

 

意外なのですが、このToolStripProgressBarクラスにはTextプロパティはありません。コントロールそのもので文字列を表示できるのはToolTipTextプロパティです。
このプログレスバーと合わせて文字列を表示するには前回紹介した「ToolStripLabel」と組み合わせて使うことになります。

 

タイトルとURLをコピーしました