【问题标题】:C# Winforms WebBrowser open links in default browserC# Winforms WebBrowser 在默认浏览器中打开链接
【发布时间】:2014-09-30 21:29:45
【问题描述】:

我知道这已经在这里讨论过好几次了,但是打开链接的默认行为 在 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 控件中打开,这是我不想要的。

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

【问题讨论】:

  • 因此,与其在同一个 Web 浏览器控件中打开链接,您想要什么?让它在 IE 中打开更新后的 URL?
  • 你到底想要什么???
  • 我希望能够将不同的 html 文件加载到 webBrowser 并在 IE(默认浏览器)中打开新链接。目前只有一个选项有效,不能同时有效。

标签: c# winforms webbrowser-control


【解决方案1】:

希望对你有帮助。

如果你想在浏览器中打开一个链接,你可以添加这个简单的代码:

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

请记住,有很多关于它的信息。在堆栈溢出中,您可以查看这篇文章: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

希望这些信息能对你有所帮助。

【讨论】:

    【解决方案2】:

    这是一个旧帖子,但我相信我可以理解原始发布者想要做什么。如果用户从下拉列表中选择页面,他们希望页面加载到 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2011-07-26
      相关资源
      最近更新 更多