点击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
相关产品推荐
相关产品推荐

