0

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

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

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

如何缩放 MDI 区域以在给定 Y 值以下开始?

4

2 回答 2

0

那么它的短处是你不能在.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();
    }
}
于 2009-10-08T01:07:46.563 回答
0

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

  1. 添加多个 MenuStrip 对象(每个将 MDI 区域在父窗体上移动 24 个像素)。
  2. 使用 MDI 子项的 LocationChanged 事件,并手动检查它们的 Y 值是否大于您希望将它们保留在下方的边框。
于 2009-10-08T08:49:55.797 回答