C# WebBrowser在IE中打开链接而不是默认浏览器?
因此,我有一个WPF应用程序,它打开了一个新窗口。然后在该新窗口上创建一个webBrowser对象:C# WebBrowser在IE中打开链接而不是默认浏览器?,c#,wpf,.net-4.0,browser,C#,Wpf,.net 4.0,Browser,因此,我有一个WPF应用程序,它打开了一个新窗口。然后在该新窗口上创建一个webBrowser对象: WebBrowser browser = new WebBrowser(); browser.Source = new System.Uri(chatUrl); browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating); this.browserControl.Child = browser; 如您所见
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上看到过其他线程,它们都说要做我正在做的事情。但我现在做的不管用。请提供帮助。您的事件处理程序使用的委托类型不正确,您指定的是NavigatingCancelEventArgs,但它应该是WebBrowserNavigatingEventHandler 得到正确答案的最简单方法就是直接打字
browser.Navigating +=
然后按TAB键两次,它将为您生成正确的处理程序
编辑:嗯,我正在看S.W.F版本,但我会在WPF的任何一种情况下尝试上面的方法。您是否在导航方法中设置了一个断点来检查它是否被触发?只是测试了一下,没有,我的导航方法没有被触发。知道为什么吗?NavigatingCancelEventArgs是intellisense可以找到的唯一导航处理程序。嗯,是否有一些属性需要设置以允许捕获事件?不知道。。。这就是我在这里问的原因。