【原创】MDI窗体程序中防止子窗体被多次实例化——Singleton(单例模式)的C#简易实现

最近在做一个WinForm运用程序,用到了MDI窗体,遇到了很多麻烦其中一个就是怎样去解决不让子窗体被多次实例化

在网上搜索很久,找到了很多解决办法,在这里简介一下一些比较简捷的方式。

其实这个问题,就是经典的23种设计模式中的单件模式(Singleton),下面用C#实现之:

假设我们有2个WinForm,主窗体叫MainForm,子窗体叫ChildForm。

先在主窗体中添加一个button1,用来实例化子窗体,我们在Form1.cs中写入下代码:

private static ChildForm childForm; //静态变量,保存唯一实例

private void button1_Click(object sender, System.EventArgs e)

    if( childForm == null || childForm.IsDisposed )
    { //第一次实例化或实例化窗体被关了,都要重新实例化
         childForm = new ChildForm();
         childForm.MdiParent = this;

         childForm.Show(); //显示

    }
}

----------------------------------------------------------------------------------------------------------

以上代码在VS2008(C#)运行通过,个人能力有限,希望高手不吝赐教!

posted on 2008-12-17 15:39  Jackey_Chen  阅读(985)  评论(0编辑  收藏  举报