MDI子窗体
控制单例
/// <summary> /// 单例提供者 /// </summary> /// <typeparam name="T">需要的类</typeparam> public class SingletonProvider<T> where T : System.Windows.Forms.Form, new() { private static T instance = default(T); private static readonly object obj = new object(); /// <summary> /// 获取窗体的唯一实例 /// </summary> public static T Instance { get { //双检锁(double-check locking)保证线程安全 if (instance == null) { lock (obj) { if (instance == null) { instance = new T(); //加上实例关闭事件,窗体就会自动回收,即instance=null; instance.FormClosed += new System.Windows.Forms.FormClosedEventHandler(instance_FormClosed); } } } return instance; } } /// <summary> /// 当窗体关闭时将Instance置空 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> static void instance_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) { instance = default(T); } }