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

C#点击工具栏按钮应用意外退出及窗体打开问题求助

问题分析与解决方案

核心问题原因

  1. 主窗体触发应用退出:如果你的应用是通过Application.Run(new FrmLogin())启动的,FrmLogin就是程序的主窗体。当CloseAllActiveForms方法关闭FrmLogin时,.NET WinForms应用会因主窗体关闭直接终止。
  2. 代码设置冲突:你同时给FrmDashboard设置了MdiParent = this和TopLevel = false——这是矛盾的:MDI子窗体必须为TopLevel = true,这种错误会引发未捕获异常,间接导致应用崩溃退出。

分步解决方案

1. 修正应用启动逻辑(解决主窗体问题)

不要把Login窗体作为程序主窗体,改用模态对话框完成登录验证,验证通过后再启动FrmAdmin作为主窗体:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    
    FrmLogin loginForm = new FrmLogin();
    // 模态显示登录窗体,验证成功后启动主窗体
    if (loginForm.ShowDialog() == DialogResult.OK)
    {
        Application.Run(new FrmAdmin());
    }
    // 登录失败直接退出应用
}

登录完成后关闭Login窗体不会影响应用运行,只有关闭FrmAdmin才会终止程序。

2. 替换CloseAllActiveForms方法(避免误关关键窗体)

不需要遍历所有打开的窗体,仅针对你的需求清理目标窗体:

  • 若处理MDI子窗体:
public void CloseAllMdiChildForms()
{
    // 仅关闭当前FrmAdmin的MDI子窗体
    foreach (Form childForm in this.MdiChildren)
    {
        childForm.Close();
    }
}
  • 若处理Panel内的嵌入窗体:
public void ClearPanelEmbeddedForms()
{
    // 清理pnlMain内的所有嵌入窗体
    foreach (Control ctrl in pnlMain.Controls)
    {
        if (ctrl is Form form)
        {
            form.Close();
        }
        ctrl.Dispose();
    }
    pnlMain.Controls.Clear();
}

3. 修正工具栏按钮点击事件代码

根据需求二选一:

  • 方案A:将窗体嵌入到pnlMain(非MDI方式)
    移除MdiParent设置,专注嵌入Panel:
private void toolStripButton4_Click(object sender, EventArgs e)
{
    ClearPanelEmbeddedForms();
    
    FrmDashboard objFORM = new FrmDashboard();
    objFORM.TopLevel = false;
    objFORM.FormBorderStyle = FormBorderStyle.None;
    objFORM.Dock = DockStyle.Fill;
    pnlMain.Controls.Add(objFORM);
    objFORM.Show();
}
  • 方案B:作为MDI子窗体显示
    移除TopLevel=false和Panel添加逻辑,正确使用MDI:
private void toolStripButton4_Click(object sender, EventArgs e)
{
    CloseAllMdiChildForms();
    
    FrmDashboard objFORM = new FrmDashboard();
    objFORM.MdiParent = this;
    objFORM.Show();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:46:09