5

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

有什么办法可以阻止 Windows 绘制这个 MDI 条?

4

3 回答 3

8

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

private void OnForm_Load(object sender, EventArgs e)
{
    this.MainMenuStrip = new MenuStrip();
}

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

于 2009-06-25T09:07:29.707 回答
0

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

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

我可以在网上找到的所有其他线程要么被放弃而没有答案,要么死路一条。如果这个功能如此繁琐而且不是原生可用的,我无法相信这个功能。

于 2009-06-23T16:16:02.617 回答
0

除了将代码添加到每个表单的 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 Sub
于 2010-12-10T20:44:43.040 回答