2013-06-02 2 views
1

У меня есть приложение WPF, в которое встроен элемент управления WebBrowser. Приложение построено с C# 4.0 и VS2010 и .NET 4.0WPF WebBrowser выдает ошибку в модуле LoadCompleted

Иногда, когда я делаю 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

попытаться бросить документ IHTMLDocument3, а затем получить documentElement.InnerHtml – volody

+0

@CBrauer: попробуйте использовать 'doc.documentElement.OuterHtml;' 'вместо doc.documentElement.InnerHtml;' – KF2

ответ

1

У меня была такая же проблема, и приведение к IHTMLDocument3 сделал свою работу. До этого я проверяю, действительно ли загружен документ, так как это также было проблемой для меня:

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

Привет, возможно, это будет поздний ответ. Но я просто столкнулся с этим вопросом. Я смог решить свою проблему, просто сделав нить на некоторое время, прежде чем получить «innerHTML». Я знаю его очень необычное, но он работает.

Так что ваш код стал

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