プログレスバーに目盛りを表示するにはどうすればよいですか?
-
03-07-2019 - |
質問
ファイルのコレクションをダウンロードしていますが、進行状況バーに進行状況を表示したいと思います。進行状況バーの最大値をすべてのファイルの合計サイズに設定し、現在の位置をこれまでにダウンロードしたサイズに設定することにより、全体的な進行状況を表示するのは簡単です。
やりたいことは、プログレスバーをセグメントに分割し、各セクションがコレクション内の異なるファイルを表していることです。
これは可能ですか?どうすればいいですか?
解決
ダウンロードするファイルの合計サイズがわかっていて、これまでにダウンロードしたファイルの合計サイズがわかっている場合は、.Maximumをファイルの合計サイズに、.Positionを合計に設定するだけです。これまでにダウンロードしました。サイズがファイル間でどのように分割されるかを心配する必要はありません。
または、各ファイルのサイズに応じてプログレスバーに目盛りを付けるという意味ですか?
他のヒント
最も簡単な方法は、UserControlを作成し、その上にProgressBarをドロップし、UserControlのOnPaint()をオーバーライドして線を描画することだと思います。
UserControlは、フォーム上に直接描画するよりも少し扱いやすいと思います。座標は扱いやすくなり、さらに別のアプリケーションで再利用しやすくなります。
最大値を100に設定します。次に、ダウンロードされる各ファイルに対して100 *(file_size / total_download_size)を実行し、それらを合計します。それらの値を一緒に追加したら、プログレスバーの値を設定します。ファイルのダウンロードが完了するたびに値を更新します。
各ファイルに1つと合計に1つ、2つのプログレスバーを使用できます。または、目盛りが必要な場合:簡単な解決策は、そのバーの下または上にいくつかの行を追加することです。