晚上逛csdn论坛的时候,看到c#区有位朋友问“防止mdi子窗体被多次实例化”,我随即写了这篇文章。
其实这个问题,就是经典的23种设计模式中的单件模式(singleton),下面用c#实现之:
首先我们有2个windows form,主窗体叫form1,子窗体叫childform。在主窗体中加入一menu,用来实例化子窗体,我们在form1.cs中写入下代码:
private static childform childform; //静态变量,保存唯一实例
private void menuitem2_click(object sender, system.eventargs e)
{
childform childform = getchildform(); //获取子窗体对象
childform.show(); //显示之
}
private childform getchildform()
{
//先后次序不能错,前一个条件用来判断是否是第一次,后一个条件用来判断子窗体是否被关闭了
if( childform == null || childform.isdisposed )
{ //第一次实例化也好,被关了也好,都重新实例化
childform = new childform();
childform.mdiparent = this;
}
return childform;
}
———————————————————————————————————-
ok, just easy like this! enjoy it!
