winform 窗体的单例模式
一直在写BS程序,最近公司需要写一些CS程序。
遇到的问题很常见也很简单,就是新打开一个窗体时如果该窗体存在就调用不存在就创建,但就是查了半天就没有一个人说正题的。
好了废话少说我的解决方法如下:
请支持我的网站:http://www.haoy7.com
单例窗体类
public class FormSingle<T> where T : Form, new() { private static T form; private static object obj = new object(); public static T GetForm() { if (form == null) { lock (obj) { if (form == null) CreateNewForm(); } } return form; } /// <summary>释放对象 /// </summary> /// <param name="obj"></param> /// <param name="args"></param> private static void Display(object obj, FormClosedEventArgs args) { form = null; } /// <summary>创建新窗体 /// </summary> private static void CreateNewForm() { form = new T(); form.FormClosed += new FormClosedEventHandler(Display);//订阅窗体的关闭事件,释放对象 } }
客户端调用:
private void button1_Click(object sender, EventArgs e) { Form2 tempForm = FormSingle<Form2>.GetForm(); tempForm.Show(); tempForm.Activate(); }
请支持我的网站: http://www.haoy7.com 好游戏网
注意:代码是给需要的人看的,本人不是作家水平也有限,请不要妄加评论,谢谢!