我有一个嵌入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);
}
}
有谁知道我收到此错误的原因?
查尔斯
答案 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;