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