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")里面写的是用来判断的字符串