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,問題解決。