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