WinForm中的单键模式

在WinForm中常常用到MDI容器。this

MDI容器就是所谓的多文档界面。spa

不过咱们实际应用中通常只用到一个父容器,以及在同一时间只能有一个子窗体。code


就像上图同样。orm

单键模式
对象

public void ShowChildForm<T>()
        {
            //经过数据类型建立泛型对象
            Form newForm = (Form)Activator.CreateInstance(typeof(T));

            bool b1 = true;//默认该窗体不存在
            foreach (Form frm in this.MdiChildren)
            {
                if (frm.GetType()==newForm.GetType())
                {
                    frm.Activate();
                    b1 = false;
                }
            }
            if (b1)
            {
                newForm.MdiParent = this;
                newForm.Show();
            }
        }

只有一个活动子窗体blog

<span style="font-size:18px;">public bool ShowOnlyOne()
        {
            bool b1 = true;
            if (this.MdiChildren.Length == 0)
            {
                b1 = true;
            }
            else
            {
                b1 = false;
            }
            return b1;
        }</span>

调用

<span style="font-size:18px;"> private void 借阅ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (ShowOnlyOne())
            {
              ShowChildForm<BookBorrow>();
            }
        } </span>