C#Winforms WebBrowser在默认浏览器中打开链接

问题描述 投票:2回答:2

我知道这已经在这里多次讨论了,但是在WebBrowser控件中单击打开链接的默认行为对我的应用程序不起作用。

因此,虽然这有效,但在IE中打开了一个链接:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    System.Diagnostics.Process.Start(e.Url.ToString());

    e.Cancel = true;
}

我使用下拉列表来更新webBrowser显示的html文件,如下所示:

private void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
   webBrowser1.Url = myURI;  
}

现在我遇到的问题是,使用上面的_Navigating方法,webBrowser不会加载任何后续的URL更改(感谢e.cancel我猜)所以它只显示它加载的第一个html文件。

如果我删除了_Navigating方法,它会更新,但是链接会在同一个webBrowser控件中打开,这是我不想要的。

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

c# winforms webbrowser-control
2个回答
6
投票

我希望这可以帮到你。

如果要在浏览器中打开链接,可以添加以下简单代码:

Process.Start("http://google.com");

请记住,有很多关于它的信息。在Stack Overflow中你可以看一下这篇文章:How to open in default browser in C#


如果要在其他浏览器中打开链接,可以使用以下代码:

System.Diagnostics.Process.Start("firefox.exe", "http://www.google.com");

不要忘记访问这个帖子:How do I open alternative webbrowser (Mozilla or Firefox) and show the specific url?


最后,我可以推荐你这个名为:.NET C#: WebBrowser control Navigate() does not load targeted URL的叠加流量帖

我希望这些信息可以帮到你一点点。


0
投票

这是一个老帖子,但我相信我可能会理解原始海报想要做的事情。如果用户从下拉列表中选择了页面,则他们希望在webbrowser控件中加载页面,但是加载页面中的任何链接都应该在用户的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;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.