WinForm MDI窗体容器

先说一下什么是窗体容器MDI

效果和容器TabelControl差不多,区别就是一个是用来存放控件,一个来存放Form窗体

MDI应用

(1)如何把一个窗体变成MDI窗体

选中窗体,在窗口样式属性中,有一个属性样式叫做IsMdiContainer,选中True就把该窗体变成了一个MDI窗体

(2)把窗体放进去

  

 //设置只能打开唯一集合,用来存放记录打开的Form
        List<Form> AllForm = new List<Form>();
        private void 打开111ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //定义要打开的Form2是不存在的
            bool hasf2 = false;
            //实例化要打开的Form2
            Form2 f2 = new Form2();
            //遍历集合,看是否存在Form2
            foreach (Form f in AllForm)
            {
                //如果存在From2类型的窗体
                if (f is Form2)
                {
                    //证明Form2已经打开了
                    hasf2 = true;
                    //把f转换成f2
                    f2 = f as Form2;
                }
            }
            //如果不存在Form2
            if (!hasf2)
            {
                //打开的时候最大化
                f2.WindowState = FormWindowState.Maximized;
                //设置f2的所在的MDI窗体是Form1
                f2.MdiParent = this;
                //设置f2所在的父级,避免在菜单栏中存在关闭按钮
                f2.Parent = panel1;
                //打开Form2
                f2.Show();
                //把f2添加到集合中
                AllForm.Add(f2);
            }
            //如果存在Form2
            else
            {
                //遍历集合,把所有Form都隐藏
                foreach (Form ff in AllForm)
                {
                    ff.Hide();
                }
                //只打开f2
                f2.Show();
            }
        }

这里有注意事项:

(1)Form2 要设置属性为无边框,这样就不会存在关闭按钮了.

(2)用MDI制作安装程序步骤的时候,先让MDI打开自身的一个Panel1,上面放一个Button,点击按钮后,Button隐藏,然后在打开MDI内的其它窗体,避免闪屏情况出现.

原文地址:https://www.cnblogs.com/zhangxin4477/p/6804241.html