【学習】WinFormsでStatusStripを使ってみよう(ステータスバーで状態を表示する)
これまでの学習では、
- Label でメッセージを表示する
- ProgressBar で進捗を表示する
という形でプログラムを動かしてきました。
しかし、フォームの下部に固定で状態を表示したい場面があります。
ステータスバーで状態を表示する
という仕組みです。
今回は StatusStrip(ステータスストリップ) を使って、フォーム下部に「準備完了」「処理中」などのメッセージを表示するアプリを作ります。
今日作るもの
フォーム下部にステータスバーがあり、
- 起動時:「準備完了」と表示
- 実行 ボタンを押すと:「処理中...」に変わり、3秒後に「完了」に変わる
という動作をします。Label と違って、フォームの最下部に固定表示されます。
ソリューションとプロジェクトを作る
Visual Studio で新しいプロジェクトを作ります。
- テンプレート: Windows Forms アプリ (.NET Framework)
- ソリューション名: StatusStripSample
- プロジェクト名: StatusStripDemo
作成すると Form1 が表示されます。
フォームに配置するコントロール
- StatusStrip をフォームにドラッグする
- フォーム下部に自動で配置され、ステータスバーが表示される
- StatusStrip の右端の「▼」をクリック → StatusLabel を選択して追加
- 追加した StatusLabel の Name を statusLabel に、Text を「準備完了」に設定
| コントロール | 名前 | 説明 |
|---|---|---|
| StatusStrip | statusStrip1 | ステータスバー本体 |
| ToolStripStatusLabel | statusLabel | メッセージ表示用(StatusStrip の子) |
| Button | runButton | 実行ボタン |
| Timer | timer1 | 3秒待ち用(コンポーネントトレイに配置) |
runButton の Text を「実行」に設定します。Timer の Interval を 3000(3秒)に設定します。
StatusStripの仕組み
- StatusStrip … フォーム下部に固定表示されるバー
- ToolStripStatusLabel … ステータスバー内のテキスト表示(Label のようなもの)
- Text プロパティで表示内容を変更する
- 複数の ToolStripStatusLabel を並べると、左から順に表示される
イベントを登録する
runButton をダブルクリックすると runButton_Click イベントが作成されます。
timer1 を選択した状態で、プロパティウィンドウの ⚡ 雷マーク(イベント) をクリックし、Tick をダブルクリックすると timer1_Tick イベントが作成されます。
完成コード
using System;
using System.Windows.Forms;
namespace StatusStripDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void runButton_Click(object sender, EventArgs e)
{
statusLabel.Text = "処理中...";
runButton.Enabled = false;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
statusLabel.Text = "完了";
runButton.Enabled = true;
}
}
}プログラムの流れ
実行ボタンを押す
↓
statusLabel.Text = "処理中..."
↓
timer1.Start()
↓
3秒後に timer1_Tick が呼ばれる
↓
statusLabel.Text = "完了"重要ポイント
StatusStrip は「フォーム下部に状態を表示する」 コントロールです。
- StatusStrip を配置すると、フォーム下部に自動で張り付く
- ToolStripStatusLabel を追加してテキストを表示する
- Text プロパティで表示内容を変更する
- 「準備完了」「処理中」「完了」など、アプリの状態を伝えるのに適している
- 複数のラベルを並べて、左に状態、右に日時などを表示できる
発展:複数のラベルを並べる
StatusStrip に ToolStripStatusLabel を複数追加すると、左から順に並びます。2つ目を Spring プロパティで true にすると、右端に寄せられます。
| ラベル | 内容 | Spring |
|---|---|---|
| statusLabel | 状態メッセージ | false |
| timeLabel | 日時表示 | true(右寄せ) |
発展:ProgressBar をステータスバーに埋め込む
ToolStripProgressBar を StatusStrip に追加すると、ステータスバー内に ProgressBar を表示できます。進捗とメッセージを同時に表示するときに便利です。
発展アイデア
StatusStrip を使うと次のようなものも作れます。
- ファイル読み込み中:「読み込み中...」
- 保存完了:「保存しました」
- 行数・文字数表示:「100 行」
- 日時表示:フォーム右下に現在時刻
- 進捗表示:ProgressBar とメッセージを組み合わせる
StatusStrip はユーザーに状態を伝えるための基本コントロールです。