限制MDI应用程序中窗口的实例数

Jav*_*ram 4 c# forms mdi winforms

我想限制用户在MDI应用程序中创建表单的多个实例.

如果打开该表单的一个实例,则必须获得焦点.如果它不是新实例,则必须创建它.

我怎样才能做到这一点?

cod*_*ger 5

你可以这样做.

创建一个静态方法:

public static Form IsFormAlreadyOpen(Type FormType)
{
    foreach (Form OpenForm in System.Windows.Forms.Application.OpenForms)
    {
        if (OpenForm.GetType() == FormType)
            return OpenForm;
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

然后在您创建子表单时.

frmMyChildForm frmChild1;

 if ((frmChild1 = (frmMyChildForm)IsFormAlreadyOpen(typeof(frmMyChildForm))) == null)
    { //Form isn't open so create one
        frmChild1= new frmMyChildForm ();

    }
   else
    { // Form is already open so bring it to the front
       frmChild1.BringToFront();

     }
Run Code Online (Sandbox Code Playgroud)