• 窗体的单例模式


    程序下载地址:

     http://download.csdn.net/detail/u010312811/9500747

    1.模式窗体与非模式窗体

      非模式窗体:创建的窗体与当前活动窗体没有建立任何关系,可以在新建窗体打开的情况下操作当前的活动窗体。

    1 frmMain m =new frmmain();
    2 m.Show();

      模式窗体:只有当新建的窗体关闭后,当前的活动窗体才能重新获得控制权。换句话说,如果不关闭新建窗体,则不能对原来的活动窗体进行任何操作。

    1 frmMain m = new frmMain();
    2 m.ShowDialog();

    2.使用模式窗体与非模式窗体的直观感受

      非模式窗体:(注:在任务栏也会出现一堆标明窗体的图标)

      

      模式窗体:(注:窗体只能打开一次,并且子窗体打开的情况下不能操作父窗体)

      

    3.如何使窗体只能打开一次,并且可以同时操作两个窗体

      如此便需要使用单例模式,原理是首先初始化一个静态的窗体。窗体显示时判断当前的窗体是否存在,存在则显示,否则新建。

    代码如下:

      创建一个静态的窗体

    1   static Form2 f2;
    1    private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
    2    {
    3        GetChild().Show();
    4        child.Location = new Point(this.Location.X - 100, this.Location.Y + 50);
    5    }

      窗体的单例模式:

    1     private frmChild GetChild()
    2     {
    3         if (child == null || child.IsDisposed == true)
    4         {
    5             child = new frmChild();
    6         }
    7 
    8         return child;
    9     }

      效果图:

  • 相关阅读:
    P1772 [ZJOI2006]物流运输
    P4290 [HAOI2008]玩具取名
    P1859 不听话的机器人
    P1841 [JSOI2007]重要的城市
    P2182 翻硬币
    P1908 逆序对(归并排序)
    P1010 幂次方(分治)
    P3386 【模板】二分图匹配
    P2158 [SDOI2008]仪仗队
    P1582 倒水(贪心 + lowbit)
  • 原文地址:https://www.cnblogs.com/imstrive/p/5426503.html
Copyright © 2020-2023  润新知