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,问题解决。