最小 = 0 および最大 = 1000 のプログレス バーがあります。今、私は長い FileSize=1454545454 と長い BytesSent (例) を持っています。プログレスバーの位置を計算するには? 私はいつも精度か何かを失います:/
編集:解決しました...次のようにキャストするのを忘れていました:(10進数)BytesSent。あなたたちは同じことをしました:答えのためにP Thx。デバッガーは常に役立ちます。
最小 = 0 および最大 = 1000 のプログレス バーがあります。今、私は長い FileSize=1454545454 と長い BytesSent (例) を持っています。プログレスバーの位置を計算するには? 私はいつも精度か何かを失います:/
編集:解決しました...次のようにキャストするのを忘れていました:(10進数)BytesSent。あなたたちは同じことをしました:答えのためにP Thx。デバッガーは常に役立ちます。
progressBar.Value = (int)(
progressBar.Minimum + ((double)BytesSent / FileSize) *
(progressBar.Maximum - progressBar.Minimum));
または:
progressBar.Minimum = 0;
progressBar.Maximum = FileSize;
progressBar.Value = BytesSent;
プログレス バーは正確な計器ではありません — これは進行状況のおおよその表示です (正確な値を示したとしても、実際の進行状況を正しく表現していない可能性があります)。
したがって、次のようにするだけです。
progressBar.Minimum = 0;
progressBar.Maximum = 100;
progressBar.Value = (BytesSent / FileSize) * progressBar.Maximum;
このMSDN ページは、より正確な値をわざわざ使用しない理由です。
ProgressBar によって表示される値は、Value プロパティの現在の値を概算するだけです。