所以我有一个打开一个新窗口的WPF应用程序。然后在该新窗口上,它创建一个webBrowser对象:
WebBrowser browser = new WebBrowser();
browser.Source = new System.Uri(chatUrl);
browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating);
this.browserControl.Child = browser;
如您所见,我为NavigatingCancelEventHandler创建了一个钩子。基于我所看到的,这个处理程序应该拦截在webbrowser中点击的链接。
private void browser_Navigating(object sender, NavigatingCancelEventArgs e)
{
e.Cancel = true;
System.Diagnostics.Process.Start(e.Uri.ToString());
}
所以我进行导航,取消它并使用Process.Start函数在我的默认浏览器中打开它。问题是,它没有这样做。它仍然在IE9中打开。我在StackOverflow上看过其他线程,他们都说要做我正在做的事情。但我正在做的事情不起作用。请帮忙。
答案 0 :(得分:0)
您正在为事件处理程序使用不正确的委托类型,您指定的是NavigatingCancelEventArgs但它应该是WebBrowserNavigatingEventHandler。
获得正确方法的最简单方法是输入
browser.Navigating +=
按两次TAB键,它会为你生成正确的处理程序。
编辑:嗯,我正在看S.W.F版本,但我会在WPF的任何一种情况下尝试上述内容。