1

所以我有一个打开一个新窗口的 WPF 应用程序。然后在那个新窗口上,它创建一个 webBrowser 对象:

WebBrowser browser = new WebBrowser();
browser.Source = new System.Uri(chatUrl);
browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating);
this.browserControl.Child = browser;

如您所见,我为 NavigatingCancelEventHandler 创建了一个挂钩。根据我所看到的,这个处理程序应该拦截在网络浏览器中点击的链接。

private void browser_Navigating(object sender, NavigatingCancelEventArgs e)
{
    e.Cancel = true;
    System.Diagnostics.Process.Start(e.Uri.ToString());
}

所以我选择导航,取消它并使用 Process.Start 函数在我的默认浏览器中打开它。问题是,它不这样做。它仍然在 IE9 中打开。我在 StackOverflow 上看到了其他线程,他们都说要做我正在做的事情。但是我正在做的事情不起作用。请帮忙。

4

1 回答 1

0

您为事件处理程序使用了不正确的委托类型,您指定了 NavigatingCancelEventArgs 但它应该是 WebBrowserNavigatingEventHandler。

获得正确的最简单的方法就是输入

browser.Navigating +=  

并按 TAB 两次,它会为您生成正确的处理程序。

编辑:嗯,我正在查看 SWF 版本,但在 WPF 的任何一种情况下,我都会尝试上述方法。

于 2012-08-15T15:27:57.223 回答