我的WinForms应用程序有一个带有System.Windows.Forms.WebBrowser
控件的选项卡。有几个控件可以设置WebBrowser的.Url
属性,当表单重新绘制时,它会调用WebBrowser的.Refresh(WebBrowserRefreshOption.Completely)
方法。
但是,有时候,表单会重新绘制,WebBrowser内容不会更改。我打破.Refresh( )
,.Url
是之前的网址。发生了什么事?
根据MSDN:
如果设置此属性的值然后立即再次检索它,则检索到的值可能与WebBrowser控件没有时间加载新文档时设置的值不同。
那不是特别的吗?为什么.Refresh( )
在重绘之前没有等到控件“有时间加载新文档”?有没有办法强迫这种情况发生?
答案 0 :(得分:4)
除非你做一些非常特别的事情,否则迫使WB重绘自己是没有意义的。由于它是它自己的控制并且有自己的Handle,它在它认为必要时能够重新绘制它自己。由于你强迫它在与ReadyState完全不同步的时刻进行重新绘制,因此可以获得一个“旧的”URL。
答案 1 :(得分:1)
尝试将事件处理程序添加到“DocumentCompleted”事件触发时运行的代码中。然后在那里添加刷新代码。 MSDN中有一些代码示例。如果您这样做,您将不会丢失任何时间猜测页面是否已加载,并且可以在准备好后立即继续处理。
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted.aspx