假设WPF WebBrowser control显示一些导航错误并且页面未显示.
所以有一个例外WPF WebBrowser control.
事实上,我需要一些方法和对象,有一个例外,以获得它如何.
我们如何处理它?
谢谢!
PS WinForm WebBrowser控件有一些方法......我们可以做类似的WPF WebBrowser控制吗?
public Form13()
{
InitializeComponent();
this.webBrowser1.Navigate("http://blablablabla.bla");
SHDocVw.WebBrowser axBrowser = (SHDocVw.WebBrowser)this.webBrowser1.ActiveXInstance;
axBrowser.NavigateError +=
new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(axBrowser_NavigateError);
}
void axBrowser_NavigateError(object pDisp, ref object URL,
ref object Frame, ref object StatusCode, ref bool Cancel)
{
if (StatusCode.ToString() == "404")
{
MessageBox.Show("Page no found");
}
}
Run Code Online (Sandbox Code Playgroud)
PS#2在WPF App下托管WinForm WebBrowser控件不是我认为的答案.
Mar*_*kus 10
我正在努力解决类似的问题.当计算机失去互联网连接时,我们希望以一种很好的方式处理它.
由于缺乏更好的解决方案,我连接了WebBrowser的Navigated事件并查看文档的url.如果是res://ieframe.dll我非常有信心发现了一些错误.
也许可以查看文档并查看服务器是否返回404.
private void Navigated(object sender, NavigationEventArgs navigationEventArgs)
{
var browser = sender as WebBrowser;
if(browser != null)
{
var doc = AssociatedObject.Document as HTMLDocument;
if (doc != null)
{
if (doc.url.StartsWith("res://ieframe.dll"))
{
// Do stuff to handle error navigation
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,但由于我刚刚经历过这个问题,我可能会分享.首先,我实施了Markus的解决方案,但由于我们的防火墙重新映射了403个消息页面,因此想要更好一些.
我在这里找到了答案(amoungst其他地方)建议使用NavigationService,因为它有一个NavigationFailed事件.
在您的XAML中,添加:
<Frame x:Name="frame"/>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏的构造函数中,添加:
frame.Navigated += new System.Windows.Navigation.NavigatedEventHandler(frame_Navigated);
frame.NavigationFailed += frame_NavigationFailed;
frame.LoadCompleted += frame_LoadCompleted;
frame.NavigationService.Navigate(new Uri("http://theage.com.au"));
Run Code Online (Sandbox Code Playgroud)
处理程序现在可以处理导航失败或成功导航:
void frame_NavigationFailed(object sender, System.Windows.Navigation.NavigationFailedEventArgs e)
{
e.Handled = true;
// TODO: Goto an error page.
}
private void frame_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
System.Diagnostics.Trace.WriteLine(e.WebResponse.Headers);
}
Run Code Online (Sandbox Code Playgroud)
BTW:.Net 4.5框架
| 归档时间: |
|
| 查看次数: |
7301 次 |
| 最近记录: |