首页 > 开发 > 综合 > 正文

MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现

2020-02-03 13:41:54
字体:
来源:转载
供稿:网友
晚上逛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!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表