zoukankan      html  css  js  c++  java
  • 保证相同类型的MDI子窗体只会被打开一次的方法

    看到论坛中有朋友问,如何可以保证在MDI主窗体中,同一类型的子窗体只能打开一次,再打开只是将原来打开的窗体激活。这个要求我以前写程序的时候也遇到过。我实现的基本思路是:

    一般每个子窗体都是继承自Form类型,不同子窗体分别代表不同的功能,因此只需要判断当前MDI打开的子窗体的类型中有没有当前需要打开的子窗体类型就行了,如果有,则直接激活,如果没有则创建一个并加到主窗体中。具体实现起来有很多种办法,这里只写出一个利用泛型的实现:

    /// <summary>
    /// 打开MDI子窗口并附加到MDI主窗口中,如果MDI主窗口中已经存在相同类型的子窗口,则直接激活
    /// </summary>
    /// <typeparam name="T">MDI子窗体类型</typeparam>
    /// <param name="mdiParent">MDI主窗体引用</param>
    /// <returns>当前创建或得到的MDI子窗体类型实例的引用</returns>
    private T OpenUniqueMDIChildWindow<T>(Form mdiParent) where T : Form, new()
    {
        
    foreach (Form subForm in mdiParent.MdiChildren)
        {
            
    if (subForm.GetType().Equals(typeof(T)))
            {
                subForm.Activate();
                
    return subForm as T;
            }
        }
        T newForm 
    = new T();
        newForm.MdiParent 
    = mdiParent;
        newForm.Show();
        
    return newForm;
    }
  • 相关阅读:
    html5图片异步上传/ 表单提交相关
    node 常用命令
    windows下 nvm下载node被墙了解决办法
    36.迷宫(广度优先搜索)
    36.迷宫(广度优先搜索)
    35.大质数
    35.大质数
    35.大质数
    35.大质数
    35.大质数
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/1292443.html
Copyright © 2011-2022 走看看