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;
    }
  • 相关阅读:
    implementaion bottle session with beaker
    [梦]20050802
    网站更新部署20100912
    Cherokee不值得推荐,你还是可以看一看
    最简单方法远程调试Python多进程子程序
    nginx相关的问题
    本地配置host解析的问题
    base target问题,
    在asp.net中自动合并小图片并使用css sprite显示出来
    html编辑器
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/1292443.html
Copyright © 2011-2022 走看看