0

最小 = 0 および最大 = 1000 のプログレス バーがあります。今、私は長い FileSize=1454545454 と長い BytesSent (例) を持っています。プログレスバーの位置を計算するには? 私はいつも精度か何かを失います:/

編集:解決しました...次のようにキャストするのを忘れていました:(10進数)BytesSent。あなたたちは同じことをしました:答えのためにP Thx。デバッガーは常に役立ちます。

4

2 に答える 2

6
progressBar.Value = (int)(
    progressBar.Minimum + ((double)BytesSent / FileSize) *
                          (progressBar.Maximum - progressBar.Minimum));

または:

progressBar.Minimum = 0;
progressBar.Maximum = FileSize;
progressBar.Value = BytesSent;
于 2012-08-24T12:43:33.957 に答える
3

プログレス バーは正確な計器ではありません — これは進行状況のおおよその表示です (正確な値を示したとしても、実際の進行状況を正しく表現していない可能性があります)。

したがって、次のようにするだけです。

progressBar.Minimum = 0;
progressBar.Maximum = 100;

progressBar.Value = (BytesSent / FileSize) * progressBar.Maximum;

このMSDN ページは、より正確な値をわざわざ使用しない理由です。

ProgressBar によって表示される値は、Value プロパティの現在の値を概算するだけです。

于 2012-08-24T12:45:33.537 に答える