0

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

编辑:已解决...我忘了像:(十进制)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 回答