1

我有一个嵌入 WebBrowser 控件的 WPF 应用程序。该应用程序使用 C# 4.0 和 VS2010 以及 .NET 4.0 构建

有时,当我执行 webBrowser.Navigate(Url) 时,会出现错误:

“System.DBNull”不包含“InnerHtml”的定义

在我的 webBrowser_LoadCompleted 事件模块中。页面加载,看起来不错

我的代码如下所示:

private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e) {
  string htmlText;
  try {
    dynamic doc = webBrowser.Document;
    htmlText = doc.documentElement.InnerHtml;
  } catch(Exception ex) {
    Debug.WriteLine(ex.Message);
  }
}

有谁知道我为什么会收到这个错误?

查尔斯

4

2 回答 2

3

我遇到了同样的问题,并且转换为 IHTMLDocument3 完成了这项工作。在此之前,我检查是否真的有一个加载的文档,因为这对我来说也是一个问题:

dynamic doc = browser.Document;
string htmlText = "";
    if (doc != null)
        htmlText = ((mshtml.IHTMLDocument3)doc).documentElement.innerHTML;
于 2015-01-28T10:20:56.403 回答
1

您好,可能回复晚了。但我只是遇到了这个问题。我可以通过简单地让线程在获得“innerHTML”之前休眠一段时间来解决我的问题。我知道它非常不寻常,但它有效。

所以你的代码变成

dynamic doc = webBrowser.Document;
Thread.Sleep(100);
htmlText = doc.documentElement.InnerHtml;
于 2015-06-10T09:47:20.327 回答