1. 程式人生 > >C#MDI開啟子窗體去掉自動生成的選單欄

C#MDI開啟子窗體去掉自動生成的選單欄

C#在DMI中開啟子窗體時自動生成了選單欄,怎麼去掉選單欄呢呢?


先在父窗體的載入事件中開啟子窗體並使它最大化


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選單欄


新增MenuStrip選單欄的ItemAdded事件


在自動生成的方法中加入

 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();//開啟子窗體
        }

完成之後生成,發現選單欄還在,但是圖示全沒了:


這樣看覺得好變扭,怎麼解決呢?想到了把選單欄的高度跳到最小就行了,但是屬性中不能直接調整選單欄高度,於是在載入事件中做了改變選單欄高度的操作:

加入了兩句程式碼:

            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();
        }

再次生成之後的效果:


ToolStrip上面的MenuStrip選單欄已經不見了,OK,問題解決。