2

我正在尝试加载 WebBrowser 内容,然后我想添加一些文本并滚动到底部。

这是我的代码示例:

webBrowser1.Url = new System.Uri("file:///" + filePath);
webBrowser1.Document.Body.InnerHtml += text;
webBrowser1.Document.Body.ScrollTop = webBrowser1.Document.Body.ScrollRectangle.Height;

当我运行它时,有一个未处理的异常“对象引用未设置为对象的实例”。或者当我评论滚动的行时,文本会添加到 WebBrowser 的先前内容中,然后导航到新内容。

所以在我的示例代码的第一行之后,我放了:

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

但它搞砸了一切。我的应用程序正在做一些非常奇怪的事情,例如多次调用同一个方法,而应该调用一次。

有什么解决办法吗?

4

2 回答 2

7

我认为您实际上想订阅DocumentCompleted事件。
Application.DoEvents仅处理待处理的 Windows 消息循环项。

在任何一种情况下,请确保您在使用之前了解调用的可能缺点。DoEvents

于 2011-07-22T19:33:55.633 回答
2

DoEvents()在这里是一个不好的解决方案。您应该使用显式线程或BackgroundWorker加载页面并让 UI 线程来处理其他内容。

于 2011-07-22T19:32:53.980 回答