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

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

根据 MSDN

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

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

有帮助吗?

解决方案

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

其他提示

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

http://msdn.microsoft的.com / EN-US /库/ system.windows.forms.webbrowser.documentcompleted.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top