Как узнать, является ли загруженная страница страницей ошибки или действительной страницей в System.Windows.Forms.WebBrowser? - PullRequest
4 голосов
/ 24 января 2012

Я использую

System.Windows.Forms.WebBrowser

элемент управления в C # для отображения некоторых страниц.Я хочу выполнить пользовательскую работу, когда пользователь нажимает на URL-адрес страницы, которая не существует.

В основном я хочу установить некоторые значения, когда браузер отображает следующее сообщение

The page cannot be displayed 
 The page you are looking for is currently unavailable. The Web site might be experiencing technical difficulties 

Как я могу получить статус, чтобы я мог различать загруженную страницу и страницу ошибки?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Если вы приведете WebBrowser к базовой реализации ActiveX, вы сможете получить доступ к событию NavigateError.

Примечание. Вам нужно будет добавить ссылку на SHDocVw. Смущает, что это на вкладке COM с именем «Microsoft Internet Controls» с путем c: \ windows \ system32 \ ieframe.dll

 private void button1_Click(object sender, EventArgs e)
        {
            //Note: you need to wait until the ActiveXInstance property is initialised.
            var axWebBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
            axWebBrowser.NavigateError += axWebBrowser_NavigateError; 
            webBrowser1.Url = new Uri("http://www.thisisnotavaliddomain.com");
        }

        void axWebBrowser_NavigateError(object pDisp, ref object URL, ref object Frame, ref object StatusCode, ref bool Cancel)
        {
            //handle your error
        }
1 голос
/ 24 января 2012

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

Из документации:

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

MSDN содержит полный пример здесь:http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.createsink.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...