关闭表单返回前页时重复创建表单实例问题咨询
问题分析与解决方案
问题根源:和ResumeLayout事件完全无关,不需要处理这个事件。你遇到的重复创建表单实例的问题,是因为在
Reports_FormClosing事件里每次都新建Dashboard实例并显示,导致关闭Reports时就生成一个新的Dashboard窗口,最终出现大量重复窗口。解决方案:
- 不要新建Dashboard实例,而是回到已存在的原Dashboard窗口。比如在打开Reports时传递原Dashboard的引用:
然后修改Reports的FormClosing事件代码:// 在Dashboard中打开Reports的代码 Reports reportsForm = new Reports(); reportsForm.Owner = this; // 将当前Dashboard设为Reports的父窗口 reportsForm.Show(); this.Hide(); // 隐藏原Dashboard而非关闭private void Reports_FormClosing(object sender, FormClosingEventArgs e) { this.Owner.Show(); // 显示原Dashboard窗口 this.Close(); } - 如果需要确保全局只有一个Dashboard实例,可以采用单例模式,或者程序启动时就创建Dashboard作为主窗口,后续仅通过Show/Hide控制显示状态,避免重复实例化。
- 不要新建Dashboard实例,而是回到已存在的原Dashboard窗口。比如在打开Reports时传递原Dashboard的引用:
内容的提问来源于stack exchange,提问作者Steven T
相关产品推荐
相关产品推荐

