zoukankan      html  css  js  c++  java
  • C# 设置MDI子窗体只能弹出一个的方法

    Windows程序设计中的MDI(Multiple Document Interface)官方解释就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序。
    
    新建一个WindowForm程序。得到一个窗体作为我们父窗体Parent。拖入一个menustrip空间。在新建一个窗体FrmChildren作为我们子窗体,界面如下图所示:
    
    其代码如下所示:
    
    public Form1()
    {
      InitializeComponent();
      //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置
      this.IsMdiContainer = true;
    }
    在menustrip打开子窗体的事件代码如下:
    
    private void tsmiOpenWindow_Click(object sender, EventArgs e)
    {  
      FrmChildren child = FrmChildren.GetWindow();//调用方法
      child.MdiParent = this;//设置child的父窗体为当前窗体
      child.Show();
      
    }
    GetWindow()这个方法在哪里呢。当然是在FrmChildren子窗体里面写
    
     public partial class FrmChildren : Form
      {
        private FrmChildren() //由 public FrmChildren改为 private FrmChildren
        {
          InitializeComponent();
        }
        static FrmChildren fc = null; 创建一个静态对象
        public static FrmChildren GetWindow()
        {  //当子窗体没有开启或者已经释放。就可以创建新窗体
          if (fc==null||fc.IsDisposed)
          {
            fc = new FrmChildren();
          }
          return fc;
        }
      }
    
    第二种方法:
    
    这种方法个人觉得很简单。直接在在menustrip打开子窗体的事件下面写就ok了
    
    private void tsmiOpenWindow_Click(object sender, EventArgs e)
    { 
    
    #region 方法二Application收集打开的窗体,用索引器来寻找,就是窗体的Name属性
    //方法二.如果没有Name为FrmChildren的子船体,实例化创建。和之前的正规做法没有什么差别,只是多了判断。
    if (Application.OpenForms["FrmChildren"] == null)
    {
    FrmChildren child = new FrmChildren();
    child.MdiParent = this;
    child.Show();
    }
    else//有Name为FrmChildren的子船体,就直接show()
    {
    Application.OpenForms["FrmChildren"].Show();
    }
    #endregion
    }
  • 相关阅读:
    mysql配置图解(mysql 5.5)
    C++中的enum
    vc6.0中的dsp,dsw,ncb,opt,clw,plg,aps等文件的简单说明
    using namespace std
    C#中Cache的使用 迎客
    数据库里的存储过程和事务有什么区别? 迎客
    WINDOWS远程默认端口3389的正确修改方式 迎客
    DES加密和解密PHP,Java,ObjectC统一的方法 迎客
    转:15点 老外聊iPhone游戏开发注意事项 迎客
    windows server 2003 删除默认共享 迎客
  • 原文地址:https://www.cnblogs.com/ilookbo/p/4822203.html
Copyright © 2011-2022 走看看