using System.Diagnostics;
using System.Windows;
using System.Windows.Navigation;
namespace OpenDefaultBrowser
{
public partial class MainWindow : Window
{
private static bool willNavigate;
public MainWindow()
{
InitializeComponent();
}
private void webBrowser1_Navigating(object sender, NavigatingCancelEventArgs e)
{
// first page needs to be loaded in webBrowser control
if (!willNavigate)
{
willNavigate = true;
return;
}
// cancel navigation to the clicked link in the webBrowser control
e.Cancel = true;
var startInfo = new ProcessStartInfo
{
FileName = e.Uri.ToString()
};
Process.Start(startInfo);
}
}
}
3 回答
您可以在导航事件中使用Proces.Start()在默认浏览器中打开新页面并设置
e.Cancel = true;
,以便控件中的页面不会更改 .例:
@ MainWindow.xaml.cs
@ MainWindow.xaml
我不认为
WebBrowser
是这样的,即使在普通浏览器中,如果点击超链接并且它代表一个简单的URL(而不是基于javascript的超链接),它将打开该浏览器窗口中的URL(以及该特定选项卡)本身 .WebBrowser
control模仿了浏览器本身的这种基本行为 .我想你可以右键单击超链接并说出"Open in New Window"(看看
WebBrowser
控件中是否启用了该选项) .如果禁用该选项,则可以使用特殊的HTMLHost API启用它 .
默认情况下,Web浏览器控件在单击链接时不会打开默认浏览器,只会打开在Internet Explorer中浏览器内部单击的链接 . 现在我们可以使用_DocumentCompleted事件,但它需要一个基于事件的触发器,如链接按钮,才能工作 . 现在的问题是,如果浏览器控件中的html具有href,那么这甚至不起作用 . 解决方法是使用_NewWindow事件 . 代码如下
欢迎提出改进建议 . 快乐的编码 .