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控件中打开,这是我不想要的。

我怎样才能使它双向工作?

c# Winforms 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;
        }
    }
}