学習記事一覧 · WinForms基礎

【学習】WinFormsでStatusStripを使ってみよう(ステータスバーで状態を表示する)

これまでの学習では、

  • Label でメッセージを表示する
  • ProgressBar で進捗を表示する

という形でプログラムを動かしてきました。

しかし、フォームの下部に固定で状態を表示したい場面があります。

ステータスバーで状態を表示する

という仕組みです。

今回は StatusStrip(ステータスストリップ) を使って、フォーム下部に「準備完了」「処理中」などのメッセージを表示するアプリを作ります。

今日作るもの

フォーム下部にステータスバーがあり、

  • 起動時:「準備完了」と表示
  • 実行 ボタンを押すと:「処理中...」に変わり、3秒後に「完了」に変わる

という動作をします。Label と違って、フォームの最下部に固定表示されます。


ソリューションとプロジェクトを作る

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: StatusStripSample
  • プロジェクト名: StatusStripDemo

作成すると Form1 が表示されます。


フォームに配置するコントロール

  1. StatusStrip をフォームにドラッグする
  2. フォーム下部に自動で配置され、ステータスバーが表示される
  3. StatusStrip の右端の「▼」をクリック → StatusLabel を選択して追加
  4. 追加した StatusLabel の Name を statusLabel に、Text を「準備完了」に設定
コントロール 名前 説明
StatusStrip statusStrip1 ステータスバー本体
ToolStripStatusLabel statusLabel メッセージ表示用(StatusStrip の子)
Button runButton 実行ボタン
Timer timer1 3秒待ち用(コンポーネントトレイに配置)

runButton の Text を「実行」に設定します。Timer の Interval3000(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 はユーザーに状態を伝えるための基本コントロールです。