zoukankan      html  css  js  c++  java
  • 窗体的单例模式

    程序下载地址:

     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     }

      效果图:

  • 相关阅读:
    浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系
    ECLIPSE快捷键
    Oracle12cWindows安装、介绍及简单使用(图文)
    金士顿DT100 G3 PS2251-07海力士U盘量产修复成功教程
    tomcat绑定域名
    TCP慢启动、拥塞避免、快速重传、快速恢复
    理解HTTP幂等性
    TCP协议缺陷不完全记录
    Nginx模块开发入门
    一步步构建大型网站架构
  • 原文地址:https://www.cnblogs.com/imstrive/p/5426503.html
Copyright © 2011-2022 走看看