2012-08-06 10 views
1

왜이 예외가 항상 발생하는지 알고 계십니까? exception웹 브라우저 사용시 항상 예외가 발생했습니다

이 내 코드

private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) 
    { 
     toolStripProgressBar1.Maximum = (int)e.MaximumProgress; 
     toolStripProgressBar1.Value = (int)e.CurrentProgress; 
    } 

내가 어떤 대답을 부탁드립니다, 감사합니다. 당신은 당신이 currentprogress 값을 확인하고 간단하게 진행 표시 줄에 할당, 그래서 값이 또한 할당 된 최소값보다 작 으면되지 않습니다 코딩에서

답변

0

- 이벤트 인수 클래스 WebBrowserProgressChangedEventArgs의 특성 CurrentProgress는 값을 가지고 -1 다운로드가 완료되면.

private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) 
    { 
     toolStripProgressBar1.Maximum = (int)e.MaximumProgress; 
     toolStripProgressBar1.Value = ((int)e.CurrentProgress < 0 || (int)e.MaximumProgress < (int)e.CurrentProgress) ? (int)e.MaximumProgress : (int)e.CurrentProgress; 
    } 
+0

당신의 코드는 항상'e.MaximumProgress'를 진행 막대 값으로 사용합니다.이 값은 항상 e.CurrentProgress와 같거나 크기가 같기 때문입니다. – Rafal

+0

@Rafal 이미 수정했습니다. –

+0

대단히 감사합니다 !! : D –

0

. 그래서 아래처럼해라.

if((int)(e.CurrentProgress) > -1) 
    toolStripProgressBar1.Value = (int)e.CurrentProgress; 
+0

e.CurrentProgress가'이다 long' 때문에 해석이 이해되지 않는다 :

이 진행 표시 줄이 완전히 다운로드의 상태를 반영하기 위해 다음 코드를 사용하십시오. – Rafal

+0

@Sai : 코드를 사용해 보도록하겠습니다. 갑자기 예외가 생겼습니다. 문제를 해결하는 방법을 알고 계십니까? 그는 http://i.stack.imgur.com/QsAd8.png –

+0

입니다. @RadityaKurnianto - MaximumProgress가 작동하지 않습니다. 확인하십시오. 항상 동일한 값입니다. 그래서 때때로 CurrentProgress> MaximumProgress, 당신이보고있는 예외로 이어진다 – 537mfb

0

귀하의 e.CurrentProgress-1입니다. 최소값은 0입니다.

그래서 예외가 발생합니다. msdn에 따르면

2

:

로드되었거나 -1 다운로드가 완료되었음을 나타냅니다 바이트 수입니다.

는 그리고 -1 값이 유효 진행 값이 아닙니다. 그리고 다운로드가 완료되었으므로 진행 표시 줄을 표시하는 것이 무의미 함을 나타냅니다. 나는이 국가가 진도 창을 숨기기에 좋은 장소라고 생각한다.

코드에서 longint으로 전송하면 크기가 2,147,483,647 바이트 (int.MaxValue)보다 큰 파일을 다운로드 할 때 비슷한 예외가 발생합니다. 당신은 반환 e.CurrentProgress 것처럼 -1

toolStripProgressBar1.Maximum = 100; 

및 이벤트

toolStripProgressBar1.Value = (int)Math.Floor((e.CurrentProgress/(double)e.MaximumProgress) * 100); 
1

에 보이는 할당해야합니다 (로드 된 또는 다운로드가 완료 바이트 수.). 조건문을 사용하여 발생하는 오류를 중지하고 값이 -1인지 확인한 다음 진행률 막대를 업데이트 할 수 있습니다. 예를 들어

: documentation에 따르면

if ((int)e.CurrentProgress > -1) { 
    toolStripProgressBar1.Value = (int)e.CurrentProgress; 
} 

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserprogresschangedeventargs.currentprogress.aspx

관련 문제