C# C:如何更改包含MDI子项的区域?

C# C:如何更改包含MDI子项的区域?,c#,mdi,scale,region,C#,Mdi,Scale,Region,创建MDI父级时,表单的整个内部将成为MDI区域 如果将menustrip添加到MDI父级,MDI区域将缩小一点,以便为menustrip腾出空间 但是,如果将面板添加到MDI父级的顶部,则整个内部仍然是MDI区域。这意味着您可以将MDI子对象移动到面板后面,并隐藏其标题行。如果将MDI子项移动到菜单提示后面,则会出现滚动条,您可以向上滚动以访问标题行。但是当您使用面板而不是菜单提示时,滚动条不会出现。因为MDI区域不知道面板,我想 如何缩放MDI区域以使其开始低于给定的Y值?问题是您无法修改.

创建MDI父级时,表单的整个内部将成为MDI区域

如果将menustrip添加到MDI父级,MDI区域将缩小一点,以便为menustrip腾出空间

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


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

问题是您无法修改.Net中的MDI父级/容器窗口。窗口仍然存在,如果您真的愿意,可以使用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区域,那么我找到了两种方法:

添加多个MenuStrip对象,每个对象都会将MDI区域在父窗体上下移24像素。 使用MDI子项的LocationChanged事件,并手动检查其Y值是否大于要将其保持在下方的边框。
谢谢我通过添加OnLocationChanged事件并检查Y值是否低于面板的高度来解决这个问题。不过我不喜欢。