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

C#新手求助:点击按钮打开新窗体并关闭当前窗体的方法

解决C#窗体切换(打开新窗体并关闭当前窗体)的问题

先解决你遇到的报错:Error CS0119

Application.Run(Terry2);报错的核心原因是:你传入的Terry2(或你提到的Window2)是窗体类型,而Application.Run()需要的是已经实例化的窗体对象。如果是在程序启动时打开窗体,正确写法是Application.Run(new Window2());,但在已有窗体中切换,不需要调用Application.Run,直接实例化显示新窗体即可。

实现窗体切换的具体步骤(以Form1切换到Window2为例)

  1. 在第一个窗体(比如Form1)中添加触发切换的控件(比如按钮),双击控件生成点击事件:
private void btnSwitchForm_Click(object sender, EventArgs e)
{
    // 1. 创建目标窗体的实例
    Window2 newWindow = new Window2();
    // 2. 显示新窗体
    newWindow.Show();
    // 3. 关闭当前窗体
    this.Close();
}
  1. 避免关闭第一个窗体时程序直接退出
    默认情况下,程序的启动窗体关闭后,整个应用会终止。如果要保留新窗体运行,需要修改Program.cs的Main方法:
[STAThread]
static void Main()
{
    ApplicationConfiguration.Initialize();
    // 启动第一个窗体,但不绑定为应用程序主窗体
    Form1 startForm = new Form1();
    startForm.Show();
    // 启动消息循环,不关联特定窗体
    Application.Run();
}
  1. 在新窗体关闭时终止程序
    在Window2的FormClosed事件中添加代码,确保关闭新窗体时整个程序退出:
private void Window2_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}

额外说明

  • 如果你不需要保留原程序的消息循环逻辑,也可以用newWindow.ShowDialog();代替newWindow.Show();,但这种方式会让新窗体以模态方式显示,原窗体在新窗体关闭前无法操作,关闭原窗体的逻辑需要调整(模态窗口打开时,原窗体的代码会暂停在ShowDialog()处,需在模态窗口关闭后再关闭原窗体)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:21:13