进度条和百分比

时间:2012-08-24 12:39:50

标签: c#

我有一个进度条,最小值= 0,最大值= 1000。 现在我有很长的FileSize = 1454545454和长BytesSent(示例)。如何计算进度条位置?我总是失去精确度或其他东西:/

编辑: 解决了...我忘了像:(十进制)BytesSent。你们做了同样的事:P 谢谢答案。 Debbuger总能提供帮助。

2 个答案:

答案 0 :(得分:6)

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

或者:

progressBar.Minimum = 0;
progressBar.Maximum = FileSize;
progressBar.Value = BytesSent;

答案 1 :(得分:3)

进度条不是精密工具 - 它是进度的近似显示(即使您显示完全值,也可能是不正确的表示真正的进步)。

所以,你应该这样做:

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

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

MSDN page就是为什么我不打算使用更精确的值:

  

ProgressBar显示的值仅近似于Value属性的当前值。