题
创建 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 区域,我找到了两种方法来做到这一点:
- 添加多个 MenuStrip 对象(每个对象将 MDI 区域在父窗体上向下移动 24 像素)。
- 使用 MDI 子项的 LocationChanged 事件,并手动检查它们的 Y 值是否大于您希望将它们保留在下方的边框。
不隶属于 StackOverflow