C#MDI打开子窗体去掉自动生成的菜单栏

C#在DMI中打开子窗体时自动生成了菜单栏,怎么去掉菜单栏呢呢?

C#MDI打开子窗体去掉自动生成的菜单栏

先在父窗体的加载事件中打开子窗体并使它最大化

C#MDI打开子窗体去掉自动生成的菜单栏

private void MDIParent1_Load(object sender, EventArgs e)
        {
            firstPage();//打开子窗体
        }

打开子窗体的方法:

private void firstPage() {
            splash frm = new splash();//子窗体实例化
            frm.MdiParent = this;//设置当前窗体为子窗体的父窗体
            frm.WindowState = FormWindowState.Maximized;//子窗体的状态是最大化
            frm.Show();//显示窗体
        }


在网上找了好多发现,只有在使用MenuStrip菜单栏的时候才能去掉,使用ToolStrip的时候无法去掉自动生成的菜单栏,所以为了使用ToolStrip的时候也去掉菜单栏,就在父窗体中一并加入了MenuStrip菜单栏,来实现去掉菜单栏。

首先在ToolStrip上面加入MenuStrip菜单栏

C#MDI打开子窗体去掉自动生成的菜单栏

添加MenuStrip菜单栏的ItemAdded事件

C#MDI打开子窗体去掉自动生成的菜单栏

在自动生成的方法中加入

 private void menuStrip1_ItemAdded_1(object sender, ToolStripItemEventArgs e)
        {
      if (e.Item.Text.Length == 0             //隐藏子窗体图标
       || e.Item.Text == "最小化(&N)"      //隐藏最小化按钮
       || e.Item.Text == "还原(&R)"           //隐藏还原按钮
       || e.Item.Text == "关闭(&C)")         //隐藏关闭按钮
            {
                e.Item.Visible = false;
            }
        }

加入之后还不行,需要在父窗体加载事件中加入这句代码:

this.MainMenuStrip = menuStrip1;//把子窗体菜单栏设置给父窗体的菜单栏


private void MDIParent1_Load(object sender, EventArgs e)
        {
            this.MainMenuStrip = menuStrip1;//把子窗体菜单栏设置给父窗体的菜单栏
            firstPage();//打开子窗体
        }

完成之后生成,发现菜单栏还在,但是图标全没了:

C#MDI打开子窗体去掉自动生成的菜单栏

这样看觉得好变扭,怎么解决呢?想到了把菜单栏的高度跳到最小就行了,但是属性中不能直接调整菜单栏高度,于是在加载事件中做了改变菜单栏高度的操作:

加入了两句代码:

            menuStrip1.AutoSize = false;
            menuStrip1.Size = new Size(100, 1);


private void MDIParent1_Load(object sender, EventArgs e)
        {
            //设置自定义菜单栏的高度为1
            menuStrip1.AutoSize = false;
            menuStrip1.Size = new Size(100, 1);
            this.MainMenuStrip = menuStrip1;//把子窗体菜单栏设置给父窗体的菜单栏
            firstPage();
        }

再次生成之后的效果:

C#MDI打开子窗体去掉自动生成的菜单栏

ToolStrip上面的MenuStrip菜单栏已经不见了,OK,问题解决。