2012-08-24 4 views
0

최소 = 0 및 최대 = 1000의 진행률 막대가 있습니다. 이제 FileSize = 1454545454로 길고 BytesSent (예)가 길어졌습니다. 진행률 막대 위치를 계산하는 방법은 무엇입니까? 나는 항상 정밀도 또는 무언가를 잃는다 :/진행률 막대 및 퍼센트

편집 : 해결 ... 나는 (10 진수) BytesSent와 같은 것을 잊어 버렸다. 너희들도 똑같이했다. P 답을위한 Thx. Debbuger는 항상 도움이됩니다.

+0

이 WPF 또는 Winforms 질문입니까? –

+1

수학 문제. 그냥 수식이 필요합니다. 나는 매우 피곤해서 생각할 수 없습니다./ – zgnilec

+0

Maximum을 FileSize로 설정 한 다음 진행률을 고려하십시오. 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 속성의 현재 값과 근사합니다.