• 保证相同类型的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;
    }
  • 相关阅读:
    Jmeter索引贴
    Jenkins Jmeter Tomcat Html实施方案
    转载:几种方法来实现scp拷贝时无需输入密码
    Jenkins Jmeter Ant Email Html实施方案
    zabbix3.4 zabbix-server zabbix-agent zabbix-java-gateway安装 配置
    shell () {}
    Vuser中常用的C语言函数
    loadrunner C语言循环for while do...while
    loadrunner C语言switch case
    linux系统扫描技术及安全防范--------待补全
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/1292443.html
Copyright © 2020-2023  润新知