winform实现父窗体MDI配合子窗体的使用

时间:2024-01-21 14:57:17

首先新建一个winform窗体

将窗体的“IsMdicontainer”属设置为true,如图

winform实现父窗体MDI配合子窗体的使用_控件

 作为父窗体肯定有自己的菜单,不然页面没办法切换,下图中有两种菜单:

第一行一般用于系统配置,设置什么的,是使用的“menuStrip”控件

第二行一般用于子窗体的导航菜单了,是使用的“toolStrip”控件

winform实现父窗体MDI配合子窗体的使用_缩放_02

 有了这两个控件之后,页面就是上图这个样子

对于第二行的菜单的图标,可以在项目属性中的资源里添加图片或者ico,也可以直接从本地导入

winform实现父窗体MDI配合子窗体的使用_显示图片_03

 接下来开始调整按钮的属性,有几个关键的属性记一下:

Image:调整图片源

DisPlayStyle:调整图标显示内容,可选只显示图片或者文字,我一般显示图片和文字“ImageAndText”

ImageScaling:调整图标显示的大小,是等比例缩小还是不缩放,不缩放就很大,显示不全,我一般用“SizeToFit”

别的也没什么,接下来是单击事件,只有添加完事件,点击才能呈现不同的子窗体

private void btn_Main_Click(object sender, EventArgs e)
        {
            if (!checkChildFrmExist("Main"))
            {
                Main frm = new Main();
                frm.WindowState = FormWindowState.Maximized;
                frm.MdiParent = this;
                frm.Show();
            }
        }

其中“Main”是子窗体的名称,其余的不用变

这是上述代码中使用到的checkChildExist()方法

private bool checkChildFrmExist(string childFrmName)
        {
            foreach (Form childFrm in this.MdiChildren)
            {
                //用子窗体的Name进行判断,如果已经存在则将他激活
                if (childFrm.Name == childFrmName)
                {
                    if (childFrm.WindowState != FormWindowState.Maximized)
                    {
                        childFrm.WindowState = FormWindowState.Maximized;
                    }
                    childFrm.Activate();
                    return true;
                }
            }
            return false;
        }

这里不需要改动可以直接使用

写到这里就大功告成