C# 多次点击按钮时如何避免重复打开多个Form2窗口
解决方案
实现思路
当前代码每次点击都会直接创建新的Form2实例,没有对旧实例做关闭处理,因此只需要在当前窗体中维护Form2的实例引用,每次点击按钮时先判断是否存在未关闭的旧实例,存在则先关闭,再创建新实例打开即可。
具体实现步骤
- 第一步:在按钮所在的主窗体类中,声明一个Form2类型的私有成员变量,用于存储已打开的Form2实例引用
// 主窗体类内的成员变量声明 private Form2 _form2Instance = null;
- 第二步:修改按钮点击事件的逻辑,先处理旧实例再创建新实例
private void Button_Click_1(object sender, EventArgs e) { // 判断是否存在未关闭的旧实例 if (_form2Instance != null && !_form2Instance.IsDisposed) { // 关闭已有实例 _form2Instance.Close(); // 手动释放资源 _form2Instance.Dispose(); } // 创建全新的Form2实例 _form2Instance = new Form2(); // 打开新窗口 _form2Instance.Show(); }
可选优化方案
如果你不需要每次都打开全新的Form2,只是要保证仅保留一个窗口,也可以选择复用已有实例,将已打开的窗口调到前台即可:
private void Button_Click_1(object sender, EventArgs e) { if (_form2Instance == null || _form2Instance.IsDisposed) { _form2Instance = new Form2(); _form2Instance.Show(); } else { // 将已打开的窗口调到前台激活 _form2Instance.Activate(); // 若窗口处于最小化状态则恢复正常显示 if (_form2Instance.WindowState == FormWindowState.Minimized) { _form2Instance.WindowState = FormWindowState.Normal; } } }
内容的提问来源于stack exchange,提问作者Bitpoison
相关产品推荐
相关产品推荐

