Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF WebBrowser在LoadCompleted模块中引发错误_C#_.net_Wpf_Wpf Controls_Browser - Fatal编程技术网

C# WPF WebBrowser在LoadCompleted模块中引发错误

C# WPF WebBrowser在LoadCompleted模块中引发错误,c#,.net,wpf,wpf-controls,browser,C#,.net,Wpf,Wpf Controls,Browser,我有一个嵌入WebBrowser控件的WPF应用程序。 该应用程序是用C#4.0和VS2010以及.NET 4.0构建的 有时,当我执行webBrowser.Navigate(Url)时,会出现以下错误: “System.DBNull”不包含“InnerHtml”的定义 在我的webBrowser_加载完成的事件模块中。页面已加载,看起来没有问题 我的代码如下所示: private void webBrowser_LoadCompleted(object sender, NavigationEv

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

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

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

在我的webBrowser_加载完成的事件模块中。页面已加载,看起来没有问题

我的代码如下所示:

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);
  }
}
有人知道我为什么会犯这个错误吗


查尔斯

我也有同样的问题,我选择了IHTMLDocument3。在此之前,我检查是否确实存在已加载的文档,因为这对我来说也是一个问题:

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

我也遇到了同样的问题,我选择了IHTMLDocument3。在此之前,我检查是否确实存在已加载的文档,因为这对我来说也是一个问题:

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

嗨,这可能是一个迟到的答复。但是我遇到了这个问题。我可以通过在获取“innerHTML”之前让线程休眠一段时间来解决我的问题。我知道这很不寻常,但很管用

所以你的代码变成了

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

嗨,这可能是一个迟到的答复。但是我遇到了这个问题。我可以通过在获取“innerHTML”之前让线程休眠一段时间来解决我的问题。我知道这很不寻常,但很管用

所以你的代码变成了

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

尝试将文档强制转换为IHTMLDocument3,然后获取documentElement。InnerHtml@CBrauer:尝试使用
doc.documentElement.OuterHtml而不是
doc.documentElement.InnerHtml尝试将文档强制转换为IHTMLDocument3,然后获取documentElement。InnerHtml@CBrauer:尝试使用
doc.documentElement.OuterHtml而不是
doc.documentElement.InnerHtml