System.Windows.Forms.WebBrowser.Refresh显示上一页

时间:2008-10-25 00:44:49

标签: .net winforms webbrowser-control

我的WinForms应用程序有一个带有System.Windows.Forms.WebBrowser控件的选项卡。有几个控件可以设置WebBrowser的.Url属性,当表单重新绘制时,它会调用WebBrowser的.Refresh(WebBrowserRefreshOption.Completely)方法。

但是,有时候,表单会重新绘制,WebBrowser内容不会更改。我打破.Refresh( ).Url是之前的网址。发生了什么事?

根据MSDN

如果设置此属性的值然后立即再次检索它,则检索到的值可能与WebBrowser控件没有时间加载新文档时设置的值不同。

那不是特别的吗?为什么.Refresh( )在重绘之前没有等到控件“有时间加载新文档”?有没有办法强迫这种情况发生?

2 个答案:

答案 0 :(得分:4)

除非你做一些非常特别的事情,否则迫使WB重绘自己是没有意义的。由于它是它自己的控制并且有自己的Handle,它在它认为必要时能够重新绘制它自己。由于你强迫它在与ReadyState完全不同步的时刻进行重新绘制,因此可以获得一个“旧的”URL。

答案 1 :(得分:1)

尝试将事件处理程序添加到“Doc​​umentCompleted”事件触发时运行的代码中。然后在那里添加刷新代码。 MSDN中有一些代码示例。如果您这样做,您将不会丢失任何时间猜测页面是否已加载,并且可以在准备好后立即继续处理。

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