WPF WebBrowser在LoadCompleted模块中引发错误

时间:2013-06-02 23:56:04

标签: c# .net wpf wpf-controls browser

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

构建

有时,当我执行webBrowser.Navigate(Url)时,我收到错误:

'System.DBNull'不包含'InnerHtml'的定义

在我的webBrowser_LoadCompleted事件模块中。页面加载,它看起来是o.k。

我的代码如下:

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);
  }
}

有谁知道我收到此错误的原因?

查尔斯

2 个答案:

答案 0 :(得分:2)

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

dynamic doc = browser.Document;
string htmlText = "";
    if (doc != null)
        htmlText = ((mshtml.IHTMLDocument3)doc).documentElement.innerHTML;

答案 1 :(得分:1)

嗨,这可能是一个迟到的回复。但我刚遇到这个问题。我能够通过在获得'innerHTML'之前让线程休眠一段时间来解决我的问题。我知道这非常不寻常,但它确实有效。

所以你的代码变成了

dynamic doc = webBrowser.Document;
Thread.Sleep(100);
htmlText = doc.documentElement.InnerHtml;