Winfrom统一单例窗口


//调用方式 

var frm = new MyForm().Instance();


public static class ExFrm
{
    static Dictionary<string, Form> forms = new Dictionary<string, Form>();

     

    /// 
    /// 单例模式
    /// 
    /// 
    /// 
    /// 
    public static T Instance(this T frm) where T : Form
    {
        frm.FormClosed += (s, e) => frm.Dispose();
        if (forms.ContainsKey(frm.Name) == false)
        {
            forms.Add(frm.Name, frm);
            return frm;
        }
        if (forms[frm.Name].IsDisposed)
        {
            forms[frm.Name] = frm;
            return frm;
        }
        frm.Close();
        return forms[frm.Name] as T;
    }

}