0

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

但是,有时会重新绘制表单并且 WebBrowser 内容不会改变。我打破了.Refresh( ),.Url是以前的 Url。这是怎么回事?

根据MSDN

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

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

4

2 回答 2

4

除非您正在做一些非常特别的事情,否则强制 WB 重新绘制自己是没有意义的。因为它是它自己的控件并且有它自己的Handle,它非常有能力在它认为有必要的时候重新绘制自己。由于您强制它在与其 ReadyState 完全不同步的时刻重新绘制,因此可以预期得到一个“旧”的 url。

于 2008-10-25T01:05:24.603 回答
1

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

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

于 2008-10-25T00:51:02.650 回答