我正在研究一个具有MDI容器主窗体的.NET C#应用程序。当用户最大化MDI孩子时,Windows在容器窗体的标题栏下绘制一个控制条,窗体上有儿童图标和右侧的系统按钮。基本上,我需要的是隐藏这个条,并使用自定义控件来提供相同的功能。当MDI Child最大化时删除MDI容器窗体的默认MDI菜单
有什么办法可以防止Windows绘制这个MDI条?
我正在研究一个具有MDI容器主窗体的.NET C#应用程序。当用户最大化MDI孩子时,Windows在容器窗体的标题栏下绘制一个控制条,窗体上有儿童图标和右侧的系统按钮。基本上,我需要的是隐藏这个条,并使用自定义控件来提供相同的功能。当MDI Child最大化时删除MDI容器窗体的默认MDI菜单
有什么办法可以防止Windows绘制这个MDI条?
其实,我发现了一个简单而有趣的方式通过分配与虚拟MenuStrip控件窗体的MainMenuStrip属性删除从我的形式这个东西(不把它在表格控件集合):
private void OnForm_Load(object sender, EventArgs e)
{
this.MainMenuStrip = new MenuStrip();
}
这样可以防止绘制默认的MDI标题,因为表单将其功能委托给其默认菜单条(如果有的话)。由于MenuStrip控件不在Form的Controls集合中,因此它也是不可见的,因此它只是当儿童最大化时用作隐藏讨厌的MDI菜单的虚拟菜单。
先生,你是个天才。如果可以的话,我会+42。 – SqlRyan 2009-06-29 04:00:04
这从几年前的谈话表明,有没有办法做到这一点,他结束了与用户控件的主要形式,而不是实际使用的MDI接口:
http://answers.google.com/answers/threadview/id/135136.html
每其他线程我可以在网上找到,要么放弃,要么没有答案,要么死胡同。我不能相信这个功能,如果这么麻烦,而不是本地可用。
有比向每个表单的Load事件添加代码更简单的方法。只需将此代码放在MdiParent窗体中,并将MenuStrip替换为您用于MENUtrip控件的实际名称即可。
Private Sub MenuStrip_ItemAdded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemEventArgs) Handles MenuStrip.ItemAdded
Dim s As New String(e.Item.GetType().ToString())
If s = "System.Windows.Forms.MdiControlStrip+SystemMenuItem" Then
e.Item.Visible = False
End If
End Sub
偶然,你有没有取得任何进展?它也困扰着我,我正在考虑用一个奖励来回答一个问题。如果你还没有答案,我会打开一个新的赏金问题。 – SqlRyan 2009-06-22 22:15:45