检测开放形式

问题描述

| 我在Form1中单击按钮时打开Form2:
Form2 f2 = new Form2()
在Form2已经打开的情况下,再次单击Form1上的按钮将显示已经打开的Form2。但是我希望Form2已经打开时不应该打开它。 关闭Form2后,再次单击该按钮时,它应显示Form2(因为Form2已关闭,即没有实例在运行)。 如何才能做到这一点? 编辑: 我希望Form2已经打开时不应该打开它。     

解决方法

        您还可以使用Application.OpenForms属性返回所有打开的Windows窗体的集合。您可以搜索此集合,以查看当前是否打开了Form1(或Form2)。     ,        除了SLaks答案外,还检查form.IsDisposed,以便您拥有
void Something() {
    if (form == null || form.IsDisposed)
        form = new OtherForm();
    form.Show();
}
我也发现form.Activate()很有帮助,这样您就可以将注意力集中在表单上     ,        您需要在第一种形式中创建一个包含第二种形式的现有实例的字段。 例如:
OtherForm form;

void Something() {
    if (form == null)
        form = new OtherForm();
    form.Show();
}
    ,        
Show
创建后的表格,
Activate
将该表格带到最前面(或者,如果您的应用程序在后台,则闪烁窗口标题)。这要求将窗体“ 5”属性设置为true,但这是Visual Studio中的默认设置。
private void ShowForm1(object sender,EventArgs e)
{
    if (this.form1 == null)
    {
        this.form1 = new Form1();
        this.form1.Show(); 
    }
    else
    {
        this.form1.Activate();
    }
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...