首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最大化MDI子级时删除MDI容器窗体的默认MDI菜单

最大化MDI子级时删除MDI容器窗体的默认MDI菜单
EN

Stack Overflow用户
提问于 2009-06-11 08:54:51
回答 3查看 6.2K关注 0票数 5

我正在开发一个.NET C#应用程序,它有一个主窗体,即MDI容器。当用户最大化MDI子项时,Windows会在容器窗体的标题栏下面绘制一个控件条,该控制条的右侧有子项的图标和系统按钮。基本上,我需要的是隐藏这个条带,并使用自定义控件来提供相同的功能。

有什么方法可以防止Windows绘制此MDI条带吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-25 09:07:30

实际上,我找到了一种简单而有趣的方法来从我的表单中删除这个东西,方法是给表单的MainMenuStrip属性分配一个虚拟的MenuStrip控件(而不是将它放在表单的Controls集合中):

代码语言:javascript
复制
private void OnForm_Load(object sender, EventArgs e)
{
    this.MainMenuStrip = new MenuStrip();
}

这可防止绘制默认MDI标题,因为窗体将其功能委托给其默认菜单条(如果有的话)。由于MenuStrip控件不在窗体的Controls集合中,因此它也是不可见的,因此它只是一个虚拟菜单,用于在孩子被最大化时隐藏讨厌的MDI菜单。

票数 8
EN

Stack Overflow用户

发布于 2009-06-23 16:16:03

多年前的这段对话表明,没有办法做到这一点,他最终在主窗体上使用用户控件,而不是实际使用MDI界面:

http://answers.google.com/answers/threadview/id/135136.html

我能在网上找到的所有其他帖子要么被抛弃,没有答案,要么是死胡同。我不能相信这个功能,如果如此繁琐,而且没有本机可用的东西。

票数 0
EN

Stack Overflow用户

发布于 2010-12-11 04:44:43

有一种比将代码添加到每个窗体的Load事件更简单的方法。只需将此代码放在MdiParent表单中,并用MenuStrip替换您用于menustrip控件的实际名称即可。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/980053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档