WinForm实现只打开一个窗口的代码

有时在WinForm中,窗口要求是只打开一个的或许很多时候我们会为每个BUTTON写个事件,在事件里写同样的代码来判断是否有打开窗口,其实我们可以使用泛型和约束来写一个公共的方法,来判断是否打开相同的窗口。方法如下:

private void ShowOrActiveForm<T>(string FormName) where T:Form,new()
        {
            #region 
            Form fm;
            if (Application.OpenForms[FormName] != null)
            {
                fm = Application.OpenForms[FormName];
                fm.Activate();
            }
            else
            {
                fm = new T();
                fm.MdiParent = this;
                fm.Show();
            } 
            #endregion
        } 

这里定义了一个泛型T,并进行了约束:where T:Form,new()

调用方法如下:

ShowOrActiveForm<UserMain>("UserMain");

其中<UserMain>里面写的是一个Form的类名,("UserMain")里面写的是用来判断的字符串

原文地址:https://www.cnblogs.com/hdl217/p/1735463.html