• 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
    }
  • 相关阅读:
    bat命令2
    bat实现创建、复制、删除文件及文件夹
    bat命令1
    ckeditor使用教程
    统计SqlServer每张表内的数据量
    entiryFramework 事务控制
    jQuery验证控件jquery.validate.js使用说明
    asp.net中套用母版页之后的findcontrol
    SessionState
    窗体单例问题
  • 原文地址:https://www.cnblogs.com/ilookbo/p/4822203.html
Copyright © 2020-2023  润新知