使用IS运算符来标识Form的类型

Nis*_*ant 3 c# reflection

我想写一个常用的方法来检查表单是否已经打开.如果它是打开的,那么只需激活它.否则显示它.现在我的挑战是我将哪种类型的参数传递给Test方法?

private void Test(?? ??)
        {
            bool isFormOpen = false;
            foreach (Form form in Application.OpenForms)
            {
                if (form is ??)
                {
                    isFormOpen = true;
                    form.Activate();
                }
            }
            if (!isFormOpen)
            {

            }
        }
Run Code Online (Sandbox Code Playgroud)

谢谢Nishant

Hei*_*nzi 7

由于您基本上是传递类型,因此可以使方法通用:

private void ActivateIfOpen<T>() 
{ 
    foreach (Form form in Application.OpenForms) 
    { 
        bool isFormOpen = false; 
        if (form is T)
        {
            isFormOpen = true; 
            form.Activate(); 
        }
    } 
    ...
}

// call like this
ActivateIfOpen<MyMainForm>();
Run Code Online (Sandbox Code Playgroud)