PR

 複数ファイルのコピーや,大量の計算など,時間がかかる処理の進行状況をユーザーに通知するには,ProgressBarコントロールを使う。時間のかかる処理をしている最中に,画面に何も変化がないと,ユーザーはプログラムの反応がなくなってしまったか,コンピュータが停止してしまったか,などと感じてしまうことがある。正常にコンピュータが動作していて,プログラムが処理を進めていることを示すには,ProgressBarを使って進行状況を示す必要がある。

 ProgressBarコントロールは,Styleプロパティで,次の3つの表示形式を指定できる。

・左から右へ徐々に増加するセグメント化されたブロック
・左から右へ塗りつぶされる連続的なバー
・ProgressBar内をブロックが左右に行ったり来たりするマーキー

 ProgressBarコントロールは,Windowsのビジュアル・スタイルが有効かどうかによって,表示できる形式が異なる。ビジュアル・スタイルが有効な場合は,連続的なバーを表示できない。また,常に黄緑色のブロックが表示され,ForeColorプロパティでの指定は無視される。

 処理の進行状況を示す値の範囲を設定するには,MaximumプロパティおよびMinimumプロパティを使う。Minimumプロパティは,通常は0に設定され,Maximumプロパティは,既定値は100になっているが,タスクの完了を示す値に設定し直して使う。例えば,複数のファイルをコピーする場合には,Maximumプロパティをコピーされるファイルの合計数に設定できる。

 進行度合いを設定するにはValueプロパティを使う。これを,処理の進行に従って変化させることで,操作の完了まで,どの程度まで進行したかを表す。

 ProgressBarコントロールによって表示される値を変更するには,Valueプロパティを直接変更する以外にもいくつかの方法がある。毎回,特定の量だけ増やすには,Stepプロパティによって増分を設定して,PerformStepメソッドを呼び出す。特定の値だけ増加させるにはIncrementメソッドを使用する。

 なお,アプリケーションの現在の処理状況を示すためのコントロールには,ProgressBarコントロールのほかに,StatusStripコントロールなどがある。StatusStripコントロールは,ステータス・バーの領域内に,アプリケーションの処理状況を示す文字だけでなく,プログレス・バーを表示させることもできる。

図1
(図1)

サンプルコードを見る


名前空間
System.Windows.Forms
対応バージョン
.NETFramework2.0,1.1,1.0
.NETCompactFramework2.0,1.0
主なプロパティ
Anchor
ProgressBarコントロールを貼り付けたフォームまたはパネルなど,親コントロールの大きさが変更されたときに,指定した方向に関してコンテナの端からProgressBarコントロールの端までの距離を一定に保つ。

Bounds
クライアント以外の要素を含むProgressBarコントロールの,親コントロールに対する相対的なサイズおよび位置(ピクセル単位)。

Dock
ProgressBarコントロールを貼り付けたフォームまたはパネルなどの親コントロールの,どの辺にドッキングさせるのかを設定する。これによって大きさがどのように変化するかが決まる。

Height
ProgressBarコントロールの高さ。

Left
ProgressBarコントロールの左端とコンテナのクライアント領域の左端の間の距離(ピクセル単位)を取得または設定する。

Location
コンテナの左上隅に対するProgressBarコントロールの左上隅の相対座標。

Maximum
ProgressBarコントロールの最大値。

Minimum
ProgressBarコントロールの最小値。

Step
PerformStepメソッドを呼び出したときに,プログレス・バーの現在の位置を進める量。

Style
プログレス・バーで進行状況を示す方法。

Top
ProgressBarコントロールの上端とコンテナのクライアント領域の上端の距離(ピクセル単位)。

Value
スピン・ボックス(アップダウンNumericUpDownProgressBarコントロール)に割り当てる値。

Visible
このProgressBarコントロールを画面に表示するかどうかを示す。Falseのときは表示されないので,このProgressBarコントロールは無効になる。

Width
ProgressBarコントロールの幅。

主なメソッド
Hide
ProgressBarコントロールをユーザーに対して非表示にする。

Increment
ProgressBarコントロールの増分または減分を指定する。

PerformStep
プログレス・バーの現在位置をStepプロパティの量だけ進める。

Refresh
ProgressBarコントロールとその子コントロールを再描画する。

SetBounds
ProgressBarコントロールProgressBarコントロールの範囲を設定する。

Show
ProgressBarコントロールをユーザーに対して表示する。