创建 MDI 父级时,窗体的整个“内部”将成为 MDI 区域。

如果将菜单条添加到 MDI 父级,则 MDI 区域会稍微缩小,以为菜单条腾出空间。

但是如果你在MDI父级的顶部添加一个面板,整个内部仍然是MDI区域。这意味着您可以将 MDI 子项移到面板后面,并隐藏它们的标题行。如果将 MDI 子项移到菜单条后面,则会出现滚动条,并且您可以向上滚动以访问标题行。但是,当您使用面板而不是菜单条时,滚动条不会出现。我想是因为 MDI 区域不知道面板。

如何缩放 MDI 区域以使其低于给定的 Y 值?

有帮助吗?

解决方案

好它的短是不能修改的MDI父/容器窗口中.NET。窗口仍然存在,您可以用Win32 API的找到它,如果你真的想要。

不过,你描述为你的目标是可行的。由于没有任何代码,我不能告诉你做错了什么,但下面演示了这种工作:

public class Form1 : Form
{
    static void Main(string[] args) { Application.Run(new Form1()); }

    public Form1()
    {
        this.IsMdiContainer = true;
        Panel test = new Panel();
        test.Dock = DockStyle.Top;
        test.Height = 100;
        this.Controls.Add(test);

        Form child = new Form();
        child.MdiParent = this;
        child.Text = "Child";
        child.Show();
    }
}

其他提示

如果 csharptest.net 是正确的,并且无法更改 MDI 区域,我找到了两种方法来做到这一点:

  1. 添加多个 MenuStrip 对象(每个对象将 MDI 区域在父窗体上向下移动 24 像素)。
  2. 使用 MDI 子项的 LocationChanged 事件,并手动检查它们的 Y 值是否大于您希望将它们保留在下方的边框。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top