我正在开发一个.NET C#应用程序,它有一个主窗体,即MDI容器。当用户最大化MDI子项时,Windows会在容器窗体的标题栏下面绘制一个控件条,该控制条的右侧有子项的图标和系统按钮。基本上,我需要的是隐藏这个条带,并使用自定义控件来提供相同的功能。
有什么方法可以防止Windows绘制此MDI条带吗?
发布于 2009-06-25 09:07:30
实际上,我找到了一种简单而有趣的方法来从我的表单中删除这个东西,方法是给表单的MainMenuStrip属性分配一个虚拟的MenuStrip控件(而不是将它放在表单的Controls集合中):
private void OnForm_Load(object sender, EventArgs e)
{
this.MainMenuStrip = new MenuStrip();
}这可防止绘制默认MDI标题,因为窗体将其功能委托给其默认菜单条(如果有的话)。由于MenuStrip控件不在窗体的Controls集合中,因此它也是不可见的,因此它只是一个虚拟菜单,用于在孩子被最大化时隐藏讨厌的MDI菜单。
发布于 2009-06-23 16:16:03
多年前的这段对话表明,没有办法做到这一点,他最终在主窗体上使用用户控件,而不是实际使用MDI界面:
http://answers.google.com/answers/threadview/id/135136.html
我能在网上找到的所有其他帖子要么被抛弃,没有答案,要么是死胡同。我不能相信这个功能,如果如此繁琐,而且没有本机可用的东西。
发布于 2010-12-11 04:44:43
有一种比将代码添加到每个窗体的Load事件更简单的方法。只需将此代码放在MdiParent表单中,并用MenuStrip替换您用于menustrip控件的实际名称即可。
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 Subhttps://stackoverflow.com/questions/980053
复制相似问题