WinForm——MDI窗体

举报
AI浩 发表于 2021/12/23 02:04:45 2021/12/23
【摘要】 MDI窗体由一个父窗体和若干个子窗体组成。MDI窗体允许同时显示多个窗体,他常包括含有子菜单的“窗口”菜单项,该菜单项用于在窗口之间进行切换。 MDI 窗体的设置并不复杂,只需要将窗体的属性 IsMdiContainer 设置为 True 即可。 该属性既可以在 Windows 窗体的属性窗口中设置,也可以通过代码设置,这里在窗体加...

MDI窗体由一个父窗体和若干个子窗体组成。MDI窗体允许同时显示多个窗体,他常包括含有子菜单的“窗口”菜单项,该菜单项用于在窗口之间进行切换。

MDI 窗体的设置并不复杂,只需要将窗体的属性 IsMdiContainer 设置为 True 即可。

该属性既可以在 Windows 窗体的属性窗口中设置,也可以通过代码设置,这里在窗体加载事件 Load 中设置窗体为 MDI 窗体,代码如下。

this.IsMdiContainer = True;

此外,还可以在窗体类的构造方法中加入上面的代码。
在设置 MDI 窗体以后,窗体的运行效果如下图所示。

  子窗体在父窗体中排列的方式可以使用带有Mdilayout枚举LayoutMdi枚举成员

枚举

说明

ArrangeIcons

所有 MDI 子图标均排列在 MDI 父窗体的工作区内。

Cascade

所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。

TileHorizontal

所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。

TileVertical

所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。

 

Cascade排列:

TileHorizontal排列:

TileVertical排列:

代码:

  public partial class Form1 : Form

    {

        private static int FormCount = 1;

        //定义此常量是为了统计MDI窗体数目,

        MainMenu mnuMain = new MainMenu();

        MenuItem FileMenu;

        MenuItem NewMenu;

        MenuItem ExitMenu;

        MenuItem WindowMenu;

        public Form1()

        {

            InitializeComponent();

            this.IsMdiContainer = true;

            this.Text = "MDI演示程序";

            FileMenu = new MenuItem();

            FileMenu.Text = "文件";

            WindowMenu = new MenuItem();

            WindowMenu.Text = "窗口(&W)";

            WindowMenu.MenuItems.Add("窗体层叠(&C)", new EventHandler(Cascade_Click));

            WindowMenu.MenuItems.Add("水平平铺(&H)", new EventHandler(TileH_Click));

            WindowMenu.MenuItems.Add("垂直平铺(&V)", new EventHandler(TileV_Click));

            WindowMenu.MdiList = true;

            //这一句比较重要,有了这一句就可以实现在新建一个MDI窗体后会在此主菜单项下显示存在的MDI窗体菜单项

            NewMenu = new MenuItem();

            NewMenu.Text = "新建窗体(&N)";

            NewMenu.Click += new EventHandler(New_Click);

            ExitMenu = new MenuItem();

         

            FileMenu.MenuItems.Add(NewMenu);

            FileMenu.MenuItems.Add(new MenuItem("-"));

            FileMenu.MenuItems.Add(ExitMenu);

            mnuMain.MenuItems.Add(FileMenu);

            mnuMain.MenuItems.Add(WindowMenu);

            this.Menu = mnuMain;

        }

        private void Cascade_Click(object sender, EventArgs e)

        //实现对主窗体中的MDI窗体的层叠操作

        {

            this.LayoutMdi(MdiLayout.Cascade);

        }

        private void TileH_Click(object sender, EventArgs e)

        //实现对主窗体中的MDI窗体的水平平铺操作

        {

            this.LayoutMdi(MdiLayout.TileHorizontal);

        }

        private void TileV_Click(object sender, EventArgs e)

        //实现对主窗体中的MDI窗体的垂直平铺操作

        {

            this.LayoutMdi(MdiLayout.TileVertical);

        }

        private void New_Click(object sender, EventArgs e)

        {

            Form frmTemp = new Form();

            //新建一个窗体

            frmTemp.MdiParent = this;

            //定义此窗体的父窗体,从而此窗体成为一个MDI窗体

            frmTemp.Text = "窗体0" + FormCount.ToString();

            //设定MDI窗体的标题

            FormCount++;

            frmTemp.Show();

            //把此MDI窗体显示出来

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            int deskWidth = Screen.PrimaryScreen.WorkingArea.Width;

            int deskHeight = Screen.PrimaryScreen.WorkingArea.Height;

            this.Width = Convert.ToInt32(deskWidth * 0.8);

            this.Height = Convert.ToInt32(deskHeight * 0.8);

        }  

        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form frmTemp = new Form();

            //新建一个窗体

            frmTemp.MdiParent = this;

            //定义此窗体的父窗体,从而此窗体成为一个MDI窗体

            frmTemp.Text = "窗体0" + FormCount.ToString();

            //设定MDI窗体的标题

            FormCount++;

            frmTemp.Show();

            //把此MDI窗体显示出来

        }

    }

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/105633316

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。