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;
    }
  • 相关阅读:
    关于返回上一页功能
    Mybatis Update statement Date null
    SQLite reset password
    Bootstrap Validator使用特性,动态(Dynamic)添加的input的验证问题
    Eclipse使用Maven2的一次环境清理记录
    Server Tomcat v7.0 Server at localhost failed to start
    PowerShell一例
    Server Tomcat v7.0 Server at libra failed to start
    商标注册英语
    A glance for agile method
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/1292443.html
Copyright © 2011-2022 走看看