判断表单是否已经打开

你可以遍历所有窗口来确定指定窗口是否已打开,当然,你设计的所有表单其 name 属性应该确保唯一

lExist = .F.
For ii = 1 to Application.Forms.Count
    If  Application.Forms(ii).name == 'xxx'
        lExist = .T.
        Exit
    Endif
Endfor
Messagebox('窗口' + Iif(lExist, '已', '未') + '打开。')


方法二


IF Wexist("FORM1")
    MessageBox("A表单已经打开")
ELSE
    Do Form B
ENDIF

注:form1 是A表单的属性名name


来源:http://bbs.youkuaiyun.com/topics/390973936

### C# WinForms 中检查窗体是否打开 在 C# 的 Windows Forms 应用程序中,可以通过遍历当前应用程序中的所有打开的窗体来判断特定类型的窗体是否已经被实例化并处于打开状态。具体方法可以利用 `Application.OpenForms` 属性获取所有正在运行的应用程序窗口列表。 对于想要检测某类窗体是否存在未关闭的实例,通常会编写辅助函数来进行此操作: ```csharp public static T FindOpenForm<T>() where T : Form { foreach (var form in Application.OpenForms) { if (form is T) return (T)form; } return null; } ``` 上述代码定义了一个泛型静态方法用于查找指定类型的第一个匹配项,并返回该对象;如果没有找到,则返回 `null`[^1]。 如果希望确保每次只存在单个此类窗体实例,在尝试显示新窗体之前调用这个函数就很有帮助了。例如展示一个名为 `MySpecialForm` 的表单前先确认它是不是已经在屏幕上: ```csharp private void ShowOrActivateForm() { MySpecialForm existingInstance = FindOpenForm<MySpecialForm>(); if(existingInstance != null && !existingInstance.IsDisposed){ // 如果窗体已经存在则激活它而不是再次创建新的实例 existingInstance.BringToFront(); }else{ // 否则新建并显示一个新的实例 var newForm = new MySpecialForm(); newForm.Show(); } } ``` 这种方法不仅能够防止重复打开相同的窗体,还可以让用户更容易注意到他们可能遗漏掉的重要信息窗口[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值