C#判断窗体是否打开,并获取聚焦、未打开则新建一个子窗体

 

在桌面程序开发会遇到的情况,托盘功能或者是小功能弹窗问题:

现有一个主窗体有子窗体 子窗体每个都可以新建其他窗体
问题:
新建子窗体时怎么判断子窗体是否打开?
若子窗体打开则置顶获取焦点。
若未打开则新建一个子窗体。

方法一:

foreach遍历式查找Form

复制代码
1 foreach (Form frm in Application.OpenForms)
2 {
3 if (frm is Errors)
4 {
5 frm.Focus(); return;
6 }
7 }
8 Errors errorForm = new Errors();
9 errorForm.Show();
foreach遍历式查找
复制代码

 

复制代码
1 foreach (Form frm in Application.OpenForms)
2 {
3 if (frm is Errors)
4 {
5 frm.Focus(); return;
6 }
7 }
8 Errors errorForm = new Errors();
9 errorForm.Show();
复制代码

===================================================================================

方法二:

指定form名查找

复制代码
 1        private void ErrorList_Clicked(object sender, EventArgs e)
 2         {
 3             // 显示所有的错误信息列表
 4             FormCollection form_is_running = Application.OpenForms;
 5 
 6             //typeof验证数据
 7             string errorFormName = typeof(Errors).Name;
 8             if (form_is_running[errorFormName] != null)
 9             {
10                 (form_is_running[errorFormName] as Form).Focus();
11             }
12             else
13             {
14                 Errors form_add = new Errors();
15                 form_add.Show();
16             }
17         }    
复制代码

 

posted on   8888888888888  阅读(342)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

Live2D
点击右上角即可分享
微信分享提示