2012-08-24 202 views
0

我有一個進度條,最小值= 0和最大值= 1000。 現在我有很長的FileSize = 1454545454和long BytesSent(示例)。如何計算進度條位置?我總是失去精確度或者東西:/進度條和百分數

編輯: 解決了......我忘了投入像:(十進制)BytesSent。你們做了同樣的事:P Thx尋求答案。 Debbuger總是有幫助的。

+0

這是WPF或Winforms的問題? –

+1

數學問題。只需要一個公式,我很累,我想不出:/ – zgnilec

+0

也考慮設置最大文件大小,然後進度將BytesSent – dvvrd

回答

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

或者:

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

的進度條是不是精密儀器 - 這是一個進步的近似顯示(即使你表現出確切值,這可能會是一個不正確真實進展的表示)。

所以,你應該簡單地做:

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

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

MSDN page就是爲什麼我不會理會使用更精確的值:通過顯示

值ProgressBar僅接近Value屬性的當前值。