zoukankan      html  css  js  c++  java
  • C#限制MDI子窗体重复打开——C#判断窗体是否已经打开 多种方法 20120626更新

    private bool HaveOpened(Form 父窗体, string 子窗体Name)
    {
    //查看窗口是否已经被打开
    bool bReturn = true;
    for (int i = 0; i < 父窗体.MdiChildren.Length; i++)
    {
    if (父窗体.MdiChildren[i].Name == 子窗体Name)
    {
    父窗体.MdiChildren[i].BringToFront();
    bReturn = false;
    break;
    }
    }
    return bReturn;
    }
     
     
    打开窗体时调用上述方法:
     
    Form1 f1=new Form();
    if (HaveOpened(父窗体, "子窗体Name"))
    {
    f1.MdiParent = 父窗体;
    f1.Show();
    }

    通过窗口名判断是否已经打开窗口,如此做的好处就是一个窗体通过不同的Name打开多个这个窗口

    比如说不同的模块打开不同的Mdi父窗体.但相同的Name只能打开一个

    /// <summary>
            /// 判断是否打开Mdi的窗口,如打开则得到窗口
            /// </summary>
            /// <param name="asFormName"></param>
            /// <returns></returns>
            public Form CheckMdiFormIsOpen(string asFormName)
            {
                Form form = null;
                foreach (Form frm in Application.OpenForms)
                {
                    if (frm.Name == asFormName)
                    {
                        form = frm;
                        break;
                    }
                }
                return form;
            }
    private bool ContainMDIChild(string childTypeString)
            {
                Form form = null;
                foreach (Form form2 in base.MdiChildren)
                {
                    if (form2.GetType().ToString() == childTypeString)
                    {
                        form = form2;
                        break;
                    }
                }
                if (form != null)
                {
                    //form.TopMost = true;
                    form.Show();
                    form.Focus();
                    return true;
                }
                return false;
            }
    
            private bool ContainChild(string childTypeString)
            {
                Form form = null;
                foreach (Form form2 in Application.OpenForms)
                {
                    if (form2.GetType().ToString() == childTypeString)
                    {
                        form = form2;
                        break;
                    }
                }
                if (form != null)
                {
                    //form.TopMost = true;
                    form.Show();
                    form.Focus();
                    return true;
                }
                return false;
            }
  • 相关阅读:
    C#中的async和await
    Windows 10 error code 0x80072efd
    Winform中调用js函数
    Windows 10 x64 安装 Visual Basic 6.0 SP6
    用谷歌浏览器来当手机模拟器
    Windows 10 解决 0x80070021 错误
    正则匹配所有中英文标点
    本地网站部署注意细节
    电信光猫 路由+拨号混合设置 备忘
    Restful 支持 自定义序列化
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/2380091.html
Copyright © 2011-2022 走看看