Могу ли я обнаруживать ошибки при использовании элемента управления .Net WebBrowser?

У меня есть приложение .Net Froms, которое отображает веб-страницы через элемент управления WebBrowser.

Есть ли в любом случае, что я могу определить, показывает ли элемент управления сообщение "Страница не найдена" или "Не удается показать веб-страницу"? Кажется, что никаких обработчиков событий ошибок нет.

Ответы

Ответ 1

Элемент управления Windows Forms WebBrowser является оберткой обозревателя Internet Explorer и не раскрывает все функциональные возможности базового элемента управления ActiveX и, в частности, события NavigateError. Вот обходной путь:

Сначала добавьте ссылку на SHDocVw.dll в свой проект (вкладка COM окна Добавить ссылку). Затем вы можете сделать следующее для захвата ошибок:

private void button1_Click(object sender, EventArgs e)
{
    SHDocVw.WebBrowser instance = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
    instance.NavigateError += new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(instance_NavigateError);
    webBrowser1.Navigate("http://www.google.com/foo");
}

void instance_NavigateError(object pDisp, ref object URL, ref object Frame, ref object StatusCode, ref bool Cancel)
{
    // Do whatever you want with the error            
}