c# Winforms WebBrowser在默认浏览器中打开链接
本文关键字:链接 默认浏览器 Winforms WebBrowser | 更新日期: 2023-09-27 18:17:02
我知道这已经在这里讨论过几次了,但是打开链接的默认行为在WebBrowser控件中单击对我的应用程序不起作用。
所以当它工作的时候它打开了一个在IE中点击的链接:
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
System.Diagnostics.Process.Start(e.Url.ToString());
e.Cancel = true;
}
我正在使用下拉列表来更新web浏览器显示的html文件,如下所示:
private void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
webBrowser1.Url = myURI;
}
现在我遇到的问题是,与上面的_navigate方法,webBrowser不加载任何后续更改的URL(感谢e.cancel我猜),所以它只显示第一个html文件它加载。
如果我删除_navigate方法,它会更新得很好,但是链接会在同一个webBrowser控件中打开,这是我不想要的。
我怎样才能使它双向工作?
希望这对你有帮助。
如果你想在浏览器中打开一个链接,你可以添加这段简单的代码:
Process.Start("http://google.com");
记住,有很多关于它的信息。在这里,你可以看看这篇文章:如何在c#中打开默认浏览器
如果你想在另一个浏览器中打开你的链接,你可以使用下面的代码:
System.Diagnostics.Process.Start("firefox.exe", "http://www.google.com");
不要忘记访问这篇文章:我如何打开另一个浏览器(Mozilla或Firefox)并显示特定的url?
最后,我可以推荐你这个堆栈溢出的帖子叫做:。net c#: WebBrowser控制导航()不加载目标URL
我希望这些信息能帮到你。
这是一个旧的帖子,但我相信我可能理解原来的海报想要做什么。如果用户从下拉列表中选择了一个页面,他们希望在web浏览器控件中加载该页面,但加载页面中的任何链接都应该在用户的web浏览器中打开。如果确实是这种情况,那么原始海报需要在表单上设置一个标志来确定行为。
最初的海报只需要一个标志,如如下所示的linksOpenInSystemBrowser。
using System;
using System.Windows.Forms;
namespace Browser_Test
{
public partial class myForm : Form
{
private bool linksOpenInSystemBrowser = false;
public myForm()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
linksOpenInSystemBrowser = false;
webBrowser1.Navigate(comboBox1.SelectedItem.ToString());
}
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if(!linksOpenInSystemBrowser)
{
linksOpenInSystemBrowser = true;
return;
}
System.Diagnostics.Process.Start(e.Url.ToString());
e.Cancel = true;
}
}
}