WPF - 如何知道浏览器是否加载了有/无错误的网页?

时间:2016-05-20 08:50:00

标签: c# .net wpf

WPF应用程序 - 我想知道网页加载是成功还是失败。意思是,我应该能够知道浏览器是否有错误,如“此页面无法显示”。我正在我的应用程序中托管一种Web浏览器控件。请帮忙。

1 个答案:

答案 0 :(得分:2)

您可以添加对Microsoft Internet Controls (SHDocVw)的引用。然后,您可以从wpf Web浏览器控件获取activeX浏览器控件并订阅其NavigateError事件。

导航期间发生错误时,事件将会升起。

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    var axBrowser = this.wpfWebBrowser1.GetType().InvokeMember("ActiveXInstance",
        BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
        null, wpfWebBrowser1, new object[] { }) as SHDocVw.WebBrowser;
    axBrowser.NavigateError += axBrowser_NavigateError;
    this.wpfWebBrowser1.Navigate("http://google.com/xxxxxxx"); //status: 404
    //this.wpfWebBrowser1.Navigate("http://elgoog.com"); //status: -2146697211
}

void axBrowser_NavigateError(object pDisp, ref object URL, ref object Frame, 
                             ref object StatusCode, ref bool Cancel)
{
    MessageBox.Show(StatusCode.ToString());
}

在上面的代码中我假设你有一个名为wpfWebBrowser1的网络浏览器控件 别忘了添加using System.Reflection; 不要忘记将MainWindow_Loaded分配给您的窗口Loaded事件 不要忘记添加引用Microsoft Internet Controls