[C#] StatusStripのレイアウト設定方法
C#のWindows FormsアプリケーションでStatusStripのレイアウトを設定するには、主にStatusStripコントロールにToolStripStatusLabelやToolStripProgressBarなどのアイテムを追加し、それらのプロパティを調整します。
StatusStripはフォームの下部に配置され、ステータス情報を表示するために使用されます。
各アイテムのSpringプロパティをtrueに設定すると、空きスペースを埋めるように自動的にサイズが調整されます。
また、Alignmentプロパティを使用してアイテムの配置を左寄せ、中央寄せ、右寄せに設定できます。
デザインビューでのドラッグアンドドロップやプロパティウィンドウを使って視覚的に設定することも可能です。
StatusStripのレイアウト設定
ToolStripStatusLabelの追加と設定
ToolStripStatusLabelは、ステータスバーにテキストを表示するためのコンポーネントです。
以下の手順で追加し、設定を行います。
- フォームデザイナーで
StatusStripを選択します。 - プロパティウィンドウから
Itemsを選択し、ToolStripStatusLabelを追加します。 Textプロパティを設定して、表示するテキストを指定します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel();
statusLabel.Text = "状態: 正常"; // 表示するテキストを設定
// StatusStripに追加
statusStrip1.Items.Add(statusLabel);
}
}
このコードを実行すると、ステータスバーに「状態: 正常」と表示されます。
ToolStripProgressBarの追加と設定
ToolStripProgressBarは、進行状況を視覚的に示すためのコンポーネントです。
以下の手順で追加し、設定を行います。
- フォームデザイナーで
StatusStripを選択します。 - プロパティウィンドウから
Itemsを選択し、ToolStripProgressBarを追加します。 Valueプロパティを設定して、進行状況を指定します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripProgressBarの作成
ToolStripProgressBar progressBar = new ToolStripProgressBar();
progressBar.Value = 50; // 進行状況を50%に設定
// StatusStripに追加
statusStrip1.Items.Add(progressBar);
}
}
このコードを実行すると、ステータスバーに50%の進行状況が表示されます。
ToolStripDropDownButtonの追加と設定
ToolStripDropDownButtonは、ドロップダウンメニューを持つボタンです。
以下の手順で追加し、設定を行います。
- フォームデザイナーで
StatusStripを選択します。 - プロパティウィンドウから
Itemsを選択し、ToolStripDropDownButtonを追加します。 DropDownItemsプロパティを設定して、メニュー項目を追加します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripDropDownButtonの作成
ToolStripDropDownButton dropDownButton = new ToolStripDropDownButton();
dropDownButton.Text = "メニュー"; // ボタンのテキストを設定
// ドロップダウンメニュー項目の追加
dropDownButton.DropDownItems.Add("項目1");
dropDownButton.DropDownItems.Add("項目2");
// StatusStripに追加
statusStrip1.Items.Add(dropDownButton);
}
}
このコードを実行すると、ステータスバーに「メニュー」というボタンが表示され、クリックすると「項目1」と「項目2」のメニューが表示されます。
Springプロパティの活用
Springプロパティは、ToolStripStatusLabelのサイズを自動的に調整するために使用されます。
このプロパティをtrueに設定すると、ラベルが利用可能なスペースを占有します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel();
statusLabel.Text = "状態: 正常";
statusLabel.Spring = true; // Springプロパティを設定
// StatusStripに追加
statusStrip1.Items.Add(statusLabel);
}
}
このコードを実行すると、ステータスバーの残りのスペースを占有するラベルが表示されます。
SpringプロパティとTextAlignプロパティの設定
ToolStripStatusLabelをStatusStrip内で右寄せするためには、SpringプロパティとTextAlignプロパティを使用します。
Springプロパティをtrueに設定すると、ラベルが可能な限りスペースを占有し、他のアイテムを右側に押し出します。TextAlignプロパティをContentAlignment.MiddleRightに設定することで、ラベル内のテキストを右寄せにします。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel();
statusLabel.Text = "状態: 正常";
statusLabel.Spring = true; // スペースを占有するように設定
statusLabel.TextAlign = ContentAlignment.MiddleRight; // テキストを右寄せに設定
// StatusStripに追加
statusStrip1.Items.Add(statusLabel);
}
}
このコードを実行すると、ステータスバーの右側に「状態: 正常」と表示されます。
Springプロパティによってラベルが右側に配置され、TextAlignプロパティによってテキストがラベル内で右寄せされます。
StatusStripのカスタマイズ
カスタムアイテムの作成
StatusStripにカスタムアイテムを追加することで、独自の機能を持つコンポーネントを作成できます。
以下の手順でカスタムアイテムを作成します。
ToolStripControlHostを使用して、任意のコントロールをラップします。StatusStripに追加します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// カスタムコントロールの作成
TextBox customTextBox = new TextBox();
customTextBox.Width = 100; // 幅を設定
// ToolStripControlHostでラップ
ToolStripControlHost host = new ToolStripControlHost(customTextBox);
// StatusStripに追加
statusStrip1.Items.Add(host);
}
}このコードを実行すると、ステータスバーにテキストボックスが表示され、ユーザーが入力できるようになります。
アイテムの動的追加と削除
StatusStripにアイテムを動的に追加したり削除したりすることができます。
これにより、アプリケーションの状態に応じて表示内容を変更できます。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// アイテムの追加
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("状態: 正常");
statusStrip1.Items.Add(statusLabel);
// アイテムの削除
statusStrip1.Items.Remove(statusLabel); // 追加したアイテムを削除
}
}このコードを実行すると、最初に「状態: 正常」が表示され、その後すぐに削除されます。
アイテムのスタイル変更
StatusStrip内のアイテムのスタイルを変更することで、見た目をカスタマイズできます。
例えば、フォントや色を変更することができます。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("状態: 正常");
// スタイルの変更
statusLabel.Font = new Font("Arial", 10, FontStyle.Bold); // フォントを太字に設定
statusLabel.ForeColor = Color.Green; // テキストの色を緑に設定
// StatusStripに追加
statusStrip1.Items.Add(statusLabel);
}
}
このコードを実行すると、ステータスバーに太字の緑色のテキスト「状態: 正常」が表示されます。
StatusStripのデザインビューでの操作
デザインビューでの配置
Visual Studioのデザインビューを使用すると、StatusStripの配置が簡単に行えます。
以下の手順で配置を行います。
- フォームデザイナーを開き、ツールボックスから
StatusStripをドラッグ&ドロップします。 StatusStripをフォームの下部に配置します。- 必要に応じて、
StatusStripのサイズを調整します。
この操作により、StatusStripがフォームの下部に固定され、他のコントロールと重ならないように配置されます。
プロパティウィンドウの活用
プロパティウィンドウを使用すると、StatusStripやそのアイテムのプロパティを簡単に設定できます。
以下の手順でプロパティを設定します。
StatusStripを選択し、プロパティウィンドウを表示します。Itemsプロパティを選択し、[...]ボタンをクリックしてアイテムの編集ダイアログを開きます。- 新しいアイテムを追加したり、既存のアイテムのプロパティ(
TextやAlignmentなど)を変更します。
この操作により、視覚的にアイテムの設定を行うことができ、コードを直接編集する必要がなくなります。
デザインビューでのイベント設定
デザインビューでは、StatusStripやそのアイテムに対するイベントを簡単に設定できます。
以下の手順でイベントを設定します。
StatusStripまたはアイテムを選択し、プロパティウィンドウを表示します。- プロパティウィンドウの上部にある雷のアイコン(イベント)をクリックします。
- 設定したいイベント(例:
Click)を選択し、イベントハンドラの名前を入力します。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("状態: 正常");
statusLabel.Click += StatusLabel_Click; // イベントハンドラを設定
// StatusStripに追加
statusStrip1.Items.Add(statusLabel);
}
private void StatusLabel_Click(object sender, EventArgs e)
{
MessageBox.Show("ステータスラベルがクリックされました。");
}
}このコードを実行すると、ステータスラベルをクリックした際にメッセージボックスが表示されます。

デザインビューでのイベント設定により、簡単にイベントハンドラを追加できます。
StatusStripの応用例
複数のStatusStripの使用
アプリケーション内で複数のStatusStripを使用することで、異なる情報を表示することができます。
例えば、メインステータスとサブステータスを分けて表示することが可能です。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// メインのStatusStripの作成
StatusStrip mainStatusStrip = new StatusStrip();
ToolStripStatusLabel mainStatusLabel = new ToolStripStatusLabel("メインステータス");
mainStatusStrip.Items.Add(mainStatusLabel);
this.Controls.Add(mainStatusStrip); // フォームに追加
// サブのStatusStripの作成
StatusStrip subStatusStrip = new StatusStrip();
ToolStripStatusLabel subStatusLabel = new ToolStripStatusLabel("サブステータス");
subStatusStrip.Items.Add(subStatusLabel);
this.Controls.Add(subStatusStrip); // フォームに追加
// サブStatusStripの位置を調整
subStatusStrip.Dock = DockStyle.Bottom; // 下部に配置
}
}
このコードを実行すると、メインステータスとサブステータスがそれぞれ表示されます。
ステータス情報の動的更新
アプリケーションの状態に応じて、StatusStripの情報を動的に更新することができます。
例えば、処理の進行状況やエラーメッセージを表示することが可能です。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
private ToolStripStatusLabel statusLabel;
public MyForm()
{
InitializeComponent();
// ToolStripStatusLabelの作成
statusLabel = new ToolStripStatusLabel("状態: 初期");
statusStrip1.Items.Add(statusLabel);
}
private void UpdateStatus(string message)
{
statusLabel.Text = message; // ステータスを更新
}
private void SomeProcess()
{
// 処理の開始
UpdateStatus("処理中...");
// 処理の完了
UpdateStatus("処理完了");
}
}
このコードを実行すると、SomeProcessメソッドを呼び出すことで、ステータスが「処理中…」から「処理完了」に更新されます。
ユーザーインタラクションの実装
StatusStrip内のアイテムにユーザーインタラクションを追加することで、よりインタラクティブなアプリケーションを作成できます。
例えば、ボタンを追加して、クリック時に特定のアクションを実行することができます。
サンプルコードは以下の通りです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// ToolStripButtonの作成
ToolStripButton actionButton = new ToolStripButton("アクション");
actionButton.Click += ActionButton_Click; // イベントハンドラを設定
// StatusStripに追加
statusStrip1.Items.Add(actionButton);
}
private void ActionButton_Click(object sender, EventArgs e)
{
MessageBox.Show("アクションボタンがクリックされました。");
}
}このコードを実行すると、ステータスバーに「アクション」というボタンが表示され、クリックするとメッセージボックスが表示されます。

これにより、ユーザーが直接ステータスバーからアクションを実行できるようになります。
まとめ
この記事では、C#のStatusStripを使用したレイアウト設定やカスタマイズ方法、デザインビューでの操作、さらには応用例について詳しく解説しました。
これにより、StatusStripを効果的に活用するための具体的な手法を学ぶことができました。
今後は、実際のプロジェクトにおいてこれらの知識を活かし、ユーザーインターフェースをより魅力的にするための工夫をしてみてください。