C# WinForm 防止子窗口重复弹出
来源:互联网 发布:2016it行业发展前景 编辑:程序博客网 时间:2024/04/29 00:19
C# WinForm程序如何防止子窗口重复弹出
问题描述:
主程序菜单中点击子菜单会弹出子窗口,但当第一个子窗口已经弹出后,再点击该子菜单依然会新弹出第二个相同的子窗口。而我们经理希望的是当再点击子菜单时不会产生新的子窗口,而是将已产生的第一个子窗口激活并出现在最前面(获得焦点)。
解决思路:
1、用ShowDialog代替Show。
ShowDialog会使子窗口屏蔽父窗口的所有功能,即只有子窗口有焦点。有时候这样处理很方便,但不是现在我们需要的。
2、互斥体模式。
不知是否有大材小用之嫌,涉及程序线程了,我未做细究。
3、设置全局变量,在产生新窗口时做判断。(本例采用这个思路)
关键实现代码参看下面代码部分。
问题重现:
假设现有一个主窗口Form1,里面有一个按钮btnNewForm(“产生新窗口");点击该按钮将产生一个新子窗口NewForm,NewForm窗体里有一个介绍标签和一个”返回“按钮。我们希望当点击”产生新窗口“按钮并弹出NewForm窗口后,再点击”产生新窗口“按钮时,不会再产生新子窗口,而是将刚产生的NewForm窗口重现出来。界面如图1、图2所示。
图1 Form1窗口
图2 NewForm窗口
参考代码:
private static NewForm newForm; /// <summary> /// 防止子窗口重复出现 /// 此处不用ShowDialog,因为那样使父窗口不可用,会有很多限制与不方便; /// 本例关键是定义一个子窗口的全局变量,并作判断 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnNewForm_Click(object sender, EventArgs e) { if (newForm == null || newForm.IsDisposed) { newForm = new NewForm(); newForm.Show(); } else { newForm.WindowState = FormWindowState.Normal; newForm.Activate(); } }
参考资料:参考资料1
0 0
- C# WinForm 防止子窗口重复弹出
- C# Winform 防止子窗体重复打开
- C#之Winform中防止重复打开同一子窗体
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- C# winform 按钮弹出窗口的问题
- C# winform 右下角弹出窗口效果
- C# winform 右下角弹出窗口效果
- c#防止打开重复子窗体
- Winform避免相同MDI子窗口重复打开的方法
- winform弹出确认窗口
- C# WinForm弹出窗口的两种方式
- C# Winform如何弹出一个模式窗口来显示进度条
- C# winform 窗体从右下角向上弹出窗口效果
- C# Winform在win10里弹出无焦点的窗口
- C# 弹出子窗口同时关闭主窗口
- winform程序防止重复运行
- 短路求值
- 查看oracle的执行计划
- AOP简易例子-重在理解作用
- 发送短信流程图
- uva 10652 Board Wrapping (计算几何-凸包)
- C# WinForm 防止子窗口重复弹出
- WPF入门(02):打造自定义风格的控件
- 按钮动画(一)
- 使用shell脚本对IP进行批量测速(Ping)
- 计算地球上两点的距离
- 纯div+css3代码绘制可爱小女孩
- java去掉字符串空格的方法
- 使用NSUserDefaults保存用户名和密码
- 02 Sprite 图片精灵