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