最近在做一个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#)运行通过,个人能力有限,希望高手不吝赐教!

相关文章: