我有一个最小值 = 0 和最大值 = 1000 的进度条。现在我有 long FileSize=1454545454 和 long BytesSent (示例)。如何计算进度条位置?我总是失去精度或其他东西:/
编辑:已解决...我忘了像:(十进制)BytesSent。你们也做了同样的事情:P Thx 的答案。调试器总是有帮助的。
我有一个最小值 = 0 和最大值 = 1000 的进度条。现在我有 long FileSize=1454545454 和 long BytesSent (示例)。如何计算进度条位置?我总是失去精度或其他东西:/
编辑:已解决...我忘了像:(十进制)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 属性的当前值。