【学習】WinFormsでStatusStripを使ってみよう(フォーム下部に状態を表示する)

広告

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

フォーム下部のStatusStripに準備完了、処理中、完了の状態を順に表示する図

今回作るもの

ボタンを押すと、フォーム下部の表示が「処理中…」から「完了」に変わるアプリを作ります。

フォームに配置するもの

コントロールName役割
ButtonrunButton処理を開始する
StatusStripstatusStrip1フォーム下部の領域
ToolStripStatusLabelstatusLabel状態を文字で表示する

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.Springtrue にすると、そのラベルが残りの幅を使います。右端に時刻や件数を表示するレイアウトを作りやすくなります。

まとめ

  • StatusStripはフォーム下部に状態を表示する
  • 実際の文字はToolStripStatusLabelのTextで変更する
  • 時間のかかる処理ではUIを止めない設計が必要
  • 成功だけでなく、処理中やエラーも表示すると分かりやすい

C# WinForms 入門シリーズの目次へ戻る

訪問数 4 回, 今日の訪問数 4回

広告