ステータスバーに進捗状況を表示する - Visual C# プログラミング
PROGRAM
ステータスバーに進捗状況を表示する
C# では ProgressBar コントロールを使って、処理の進捗を可視化することができます。
今回は、これを Windows フォームの下端に配置した StatusStrip において、処理に合わせて目盛りを進めてみます。
Windows フォームに StatusStrip を配置して、そこに ProgressBar コントロールを追加します。
配置したプログレスバーの名前を statusProgressBar としたときに、次のようにして進捗状況を画面に表示して行きます。
// 処理するデータの数にあわせて、プログレスバーの目盛りの範囲を設定します。
statusProgressBar.Minimum = 0;
statusProgressBar.Maximum = data.Count;
// プログレスバーの値を 0 にします。
statusProgressBar.Value = 0;
// ここで、データの数だけ処理を行います。
for (int i = 0; i < data.Count; i++)
{
// 進捗表示を更新します。
statusProgressBar.Value++;
Application.DoEvents();
// ここで、データを使って何か処理を行います。
}
このようにすることで、データの処理が進むにつれて、プログレスバーの目盛りが進むようになりました。
ここで、進捗表示の更新のときに "Application.DoEvents" というメソッドを実行していますが、このようにしないと、処理が全て終わるまで進捗状況の表示が更新されない場合があるためです。
この DoEvents メソッドを実行すると、Windows のメッセージ処理が行われるので、処理の途中でもプログレスバーに更新命令が届いて、進捗表示が更新されるようになります。
ただし、DoEvents メソッドを使用すると、ウィンドウ上のマウスクリックなどのメッセージも処理されるため、処理中に別のボタンが押されたりして、別の処理が実行される場合があります。
そのため、処理中に他の処理を始められては困る場合は、処理中はそのボタンを無効化するなどの配慮が必要です。
[ もどる ]