2008-10-25 3 views
0

내 WinForms 응용 프로그램에는 System.Windows.Forms.WebBrowser 컨트롤이있는 탭이 있습니다. WebBrowser의 .Url 속성을 설정하는 여러 컨트롤이 있으며 폼이 다시 그려지면 WebBrowser의 .Refresh(WebBrowserRefreshOption.Completely) 메서드가 호출됩니다.System.Windows.Forms.WebBrowser.Refresh 이전 페이지 표시

그러나 경우에 따라 양식이 다시 칠해지고 WebBrowser 내용이 변경되지 않습니다. 나는 .Refresh()에서 깨고, .Url은 이전 URL입니다. 무슨 일이야?

MSDN에 따르면이 속성 값을 설정 한 다음 즉시 다시 검색 할 경우

, 검색 값은 WebBrowser 컨트롤이 새 문서를로드 할 시간이되지 않은 경우 설정 값과 다를 수 있습니다 .

그럼 특별하지 않습니까? .Refresh()은 다시 그리기 전에 컨트롤에 "새 문서를로드 할 시간이있었습니다"라는 메시지가 나타날 때까지 기다리지 않는 이유는 무엇입니까? 이 일을 강제로 할 수있는 방법이 있습니까?

답변

4

, 그 자체를 다시 칠하기 위해 WB를 강제로 이해가되지 않습니다. 자체 컨트롤이기 때문에 자체 Handle을 가졌으므로 필요할 때마다 자체적으로 다시 칠할 수 있습니다. ReadyState와 완전히 일치하지 않는 순간에 다시 칠하도록 강요하므로 "오래된"URL을 가져 오는 것이 좋습니다.

+0

당신은 절대적으로 옳습니다. 그것만으로 내 양식을 다시 그리는 완전히 새로운 페이지를로드 할 때 WB를 새로 고칠 수있었습니다. +1 이상 줄 수 있기를 바랍니다. –

1

"DocumentCompleted"이벤트가 발생하면 실행되는 코드에 이벤트 처리기를 추가해보십시오. 그런 다음 새로 고침 코드를 추가하십시오. MSDN에는 코드 예제가 몇 가지 있습니다. 이렇게하면 페이지가로드되었는지 추측 할 때 시간을 잃지 않고 준비가 완료되는 즉시 처리를 계속할 수 있습니다. 당신은 매우 특별한 일을하지 않는 한

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted.aspx