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

能否在窗体中通过按钮打开已有窗体,且保留原窗体显示?

按钮打开新窗体的实现方案

当然可行啦!这是桌面应用开发里非常常见的场景,完全能实现「点击按钮弹出新窗体,同时保留原窗体可操作可见」的需求,而且实现起来一点都不复杂~

核心步骤说明

1. 先添加第二个窗体

你得先给项目加一个新的窗体(也就是你要弹出的那个「新标签页」式的窗体):

  • 在Visual Studio这类开发工具里,右键你的项目 → 选择「添加」→「Windows 窗体」(如果是WPF就选「窗口」),给这个新窗体起个好记的名字(比如SecondForm),然后按需设计它的界面就行。

2. 给原窗体的按钮写点击逻辑

找到原窗体上的按钮,双击它进入点击事件的代码区域,然后写几行简单的代码就行:

// 实例化你刚创建的新窗体对象
SecondForm newPopupForm = new SecondForm();
// 用非模态方式显示窗体——这样原窗体不会被挡住,还能正常操作
newPopupForm.Show();

⚠️ 这里要区分两个方法:

  • 如果用ShowDialog(),新窗体是模态的,会完全挡住原窗体,必须关掉新窗体才能操作原窗体,不符合你的需求;
  • Show()是非模态的,正好能实现「两个窗体同时可见可操作」的效果。

关于类和项目项的疑问解答

  • 每个窗体本身就是一个类:你添加的新窗体后台会自动生成对应的类文件(比如SecondForm.cs),所以其实你已经在使用类了,但完全不需要自己手动写复杂的自定义类,开发工具会帮你搞定所有基础框架。
  • 必须添加新窗体项:因为你需要一个现成的「容器」来承载新窗体的内容,所以这一步是必不可少的,属于基础操作。

完整示例代码(以C# WinForms为例)

原窗体按钮点击事件的完整代码参考:

private void btnOpenNewForm_Click(object sender, EventArgs e)
{
    // 创建新窗体实例
    SecondForm secondForm = new SecondForm();
    // 非模态显示,原窗体保持可用
    secondForm.Show();
}

如果希望新窗体关闭后自动释放资源,也可以用using包裹:

private void btnOpenNewForm_Click(object sender, EventArgs e)
{
    using (SecondForm secondForm = new SecondForm())
    {
        secondForm.Show();
    }
}

要是你用的是WPF,逻辑差不多,代码大概是这样:

private void btnOpenNewWindow_Click(object sender, RoutedEventArgs e)
{
    SecondWindow newWindow = new SecondWindow();
    newWindow.Show();
}

总之,核心逻辑就是实例化新窗体/窗口类,调用非模态的显示方法,就能完美实现你要的效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:05:16