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

点击Form4关闭按钮触发FormClosing事件打开Form1失败,求解决

解决方案

情况1:Form4是程序启动窗体

如果Form4是项目的启动窗体,直接关闭它会导致整个应用程序终止,你打开的Form1也会随之关闭。解决步骤如下:

  • 先取消Form4的默认关闭行为,再隐藏Form4,最后打开Form1。

代码示例:

private void Form4_FormClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
    // 取消默认关闭操作
    e.Cancel = true;
    // 隐藏当前Form4
    this.Hide();
    // 启动Form1
    Form1 form = new Form1();
    form.Show();
}

如果后续不需要再使用Form4,可在打开Form1后调用this.Dispose()释放资源,注意要放在取消关闭操作之后。

情况2:Form4不是启动窗体但仍无法打开Form1

这种情况大概率是两个原因:事件未绑定,或Form1实例被局部变量回收。

  • 检查事件绑定:在Form4的设计器中,选中窗体,在属性窗口的事件列表里找到FormClosing,确认已关联到Form4_FormClosing方法。
  • 避免实例被回收:将Form1的实例提升为类级变量,示例代码:
private Form1 _form1;

private void Form4_FormClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
    _form1 = new Form1();
    _form1.Show();
    // 若无需保留Form4,此处不需要设置e.Cancel = true
}

如果希望Form1以模态窗口打开(Form4会阻塞直到Form1关闭),可将form.Show()替换为form.ShowDialog()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:57:02