zoukankan      html  css  js  c++  java
  • MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现

    MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现
    文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/200727/13217.html

    晚上逛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;
    }

         

    作者:观海看云个人开发历程知识库 - 博客园
    出处:http://www.cnblogs.com/zhangtao/
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    赫夫曼树编码
    根据先序和中序实现后序
    C++语言实现开心消消乐
    C语言风格实现的开心消消乐
    动态规划
    leetcode dp wordbreakII
    欧拉回路
    欧拉通路是否存在
    Python|多任务:线程、进程、协程--你想要的都在这里
    网络通信:socket、udp与tcp
  • 原文地址:https://www.cnblogs.com/zhangtao/p/1523196.html
Copyright © 2011-2022 走看看