You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于C#的WinForms按钮点击实现新页面导航问题

解决WinForms点击按钮在新页面打开多个网址的问题

首先看你当前的代码,问题出在连续调用webBrowser1.Navigate()——每次调用这个方法都会让WebBrowser控件替换当前加载的页面,所以最后只有最后一个网址会被显示,而且完全没处理“新页面打开”的逻辑。下面给你几种不同的解决方案,根据你的需求选:

方案1:用系统默认浏览器打开每个网址(最推荐)

这种方式最简单,直接调用系统浏览器打开每个链接,每个网址会在新窗口或新标签页打开(取决于浏览器的设置),而且不用受WebBrowser旧IE内核的限制:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows.Forms;

namespace ffffffffffffgd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        void Button1Click(object sender, EventArgs e)
        {
            // 把要打开的网址存到列表里,方便遍历
            var urls = new List<string>
            {
                "https://www.scifi.hu",
                "http://onlinepont-online.cc",
                "https://filmbolond-onlinefilm.net",
                "https://www.mafab.hu",
                "https://lichess.org/"
            };

            foreach (var url in urls)
            {
                // 启动系统默认浏览器打开网址
                Process.Start(new ProcessStartInfo(url)
                {
                    UseShellExecute = true // 必须设置这个,确保用系统默认程序打开
                });
            }
        }
    }
}

方案2:在WinForms里弹出新窗口加载每个网址

如果想在自己的应用内打开每个页面,每个网址对应一个新的窗体:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace ffffffffffffgd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        void Button1Click(object sender, EventArgs e)
        {
            var urls = new List<string>
            {
                "https://www.scifi.hu",
                "http://onlinepont-online.cc",
                "https://filmbolond-onlinefilm.net",
                "https://www.mafab.hu",
                "https://lichess.org/"
            };

            foreach (var url in urls)
            {
                // 创建新窗体
                var browserWindow = new Form();
                browserWindow.Size = new Size(800, 600); // 设置窗口大小
                browserWindow.Text = new Uri(url).Host; // 用网址的主机名做窗口标题

                // 创建WebBrowser控件并添加到新窗体
                var webBrowser = new WebBrowser();
                webBrowser.Dock = DockStyle.Fill;
                browserWindow.Controls.Add(webBrowser);

                // 加载网址并显示窗口
                webBrowser.Navigate(url);
                browserWindow.Show();
            }
        }
    }
}

方案3:用标签页在同一个窗口内管理多个页面

如果希望所有页面都在主窗口内,像浏览器的标签页一样,可以添加一个TabControl控件(先在设计器里拖一个TabControl到MainForm,命名为tabControl1),然后用下面的代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ffffffffffffgd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        void Button1Click(object sender, EventArgs e)
        {
            var urls = new List<string>
            {
                "https://www.scifi.hu",
                "http://onlinepont-online.cc",
                "https://filmbolond-onlinefilm.net",
                "https://www.mafab.hu",
                "https://lichess.org/"
            };

            foreach (var url in urls)
            {
                // 创建新标签页,用网址的主机名做标签标题
                var tabPage = new TabPage(new Uri(url).Host);
                
                // 创建WebBrowser控件
                var webBrowser = new WebBrowser();
                webBrowser.Dock = DockStyle.Fill;
                webBrowser.Navigate(url);
                
                // 把WebBrowser添加到标签页,再把标签页添加到TabControl
                tabPage.Controls.Add(webBrowser);
                tabControl1.TabPages.Add(tabPage);
            }
        }
    }
}

额外提醒

  • 如果你用的是.NET Core/.NET 5及以上版本,使用Process.Start时必须设置UseShellExecute = true,否则会报错。
  • 原生的WebBrowser控件基于旧版IE引擎,对现代网页的兼容性很差,如果需要更好的网页支持,可以考虑使用CefSharp等第三方浏览器控件。

内容的提问来源于stack exchange,提问作者MISI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:18:45