【学習】WinFormsでStatusStripを使ってみよう(フォーム下部に状態を表示する)
StatusStrip は、フォーム下部にアプリの状態を表示するためのコントロールです。「準備完了」「処理中」「保存しました」のようなメッセージを、作業の邪魔をせずに伝えられます。

今回作るもの
ボタンを押すと、フォーム下部の表示が「処理中…」から「完了」に変わるアプリを作ります。
フォームに配置するもの
| コントロール | Name | 役割 |
|---|---|---|
| Button | runButton | 処理を開始する |
| StatusStrip | statusStrip1 | フォーム下部の領域 |
| ToolStripStatusLabel | statusLabel | 状態を文字で表示する |
StatusStripをフォームへ配置すると、通常は下端に固定されます。StatusStripの「項目の追加」から ToolStripStatusLabel を追加し、Nameを statusLabel にします。
初期表示を設定する
public Form1()
{
InitializeComponent();
statusLabel.Text = "準備完了";
}
ボタンで状態を変える
private void runButton_Click(object sender, EventArgs e)
{
statusLabel.Text = "処理中...";
// ここに実際の処理を書く
statusLabel.Text = "完了";
}
この例は、状態表示の基本形を示しています。ただし、時間のかかる処理をこのまま書くと画面が固まり、「処理中…」が描画されないことがあります。
時間のかかる処理ではasyncを使う
待ち時間を模擬しながら画面を操作できる例です。Task.Delay は学習用の待機であり、実際の処理に置き換えてください。
private async void runButton_Click(object sender, EventArgs e)
{
runButton.Enabled = false;
statusLabel.Text = "処理中...";
try
{
await Task.Delay(2000);
statusLabel.Text = "完了";
}
catch (Exception ex)
{
statusLabel.Text = $"エラー: {ex.Message}";
}
finally
{
runButton.Enabled = true;
}
}
このコードを使う場合は、ファイルの先頭に using System.Threading.Tasks; が必要です。
Springプロパティで残り幅を使う
複数のラベルを並べる場合、左側の ToolStripStatusLabel.Spring を true にすると、そのラベルが残りの幅を使います。右端に時刻や件数を表示するレイアウトを作りやすくなります。
まとめ
- StatusStripはフォーム下部に状態を表示する
- 実際の文字はToolStripStatusLabelのTextで変更する
- 時間のかかる処理ではUIを止めない設計が必要
- 成功だけでなく、処理中やエラーも表示すると分かりやすい











ディスカッション
コメント一覧
まだ、コメントがありません