Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebBrowser在IE中打开链接而不是默认浏览器?_C#_Wpf_.net 4.0_Browser - Fatal编程技术网

C# WebBrowser在IE中打开链接而不是默认浏览器?

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; 如您所见

因此,我有一个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上看到过其他线程,它们都说要做我正在做的事情。但我现在做的不管用。请提供帮助。

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

得到正确答案的最简单方法就是直接打字

browser.Navigating +=  
然后按TAB键两次,它将为您生成正确的处理程序


编辑:嗯,我正在看S.W.F版本,但我会在WPF的任何一种情况下尝试上面的方法。

您是否在导航方法中设置了一个断点来检查它是否被触发?只是测试了一下,没有,我的导航方法没有被触发。知道为什么吗?NavigatingCancelEventArgs是intellisense可以找到的唯一导航处理程序。嗯,是否有一些属性需要设置以允许捕获事件?不知道。。。这就是我在这里问的原因。