【问题标题】:Controls on an MDI parent backgroundMDI 父背景上的控件
【发布时间】:2009-02-09 13:14:54
【问题描述】:
将控件放置在 MID 父窗口的背景上是个好主意吗?我在 MDI 窗口中添加了一个拆分容器,该窗口按预期显示,但是当我尝试在同一窗口中打开任何其他表单时,它们显示在 SplitContainer 后面。让它们弹出的唯一方法是如果我使用 ShowDialog 来显示它们。不幸的是,我需要能够同时打开多个窗口,所以这不是一个实用的解决方案。
我是不是走错了路?
【问题讨论】:
标签:
vb.net
winforms
visual-studio-2005
【解决方案1】:
您不能添加任何覆盖 MDI 客户端窗口(深灰色背景)的控件。 MDI 客户端以客户端窗口作为父窗口显示,因此它们的 Z 顺序低于控件。
WF 确实支持停靠控件,它会自动将客户区调整为父窗体中的剩余空间。但仅此而已,SplitContainer 无法工作。
请注意,您可以在 SplitContainer 的面板上显示表单。将它们的 TopLevel 属性设置为 False,以便它们变成控件。例如:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Form2 f2 = new Form2();
f2.TopLevel = false;
f2.FormBorderStyle = FormBorderStyle.None;
f2.Visible = true;
splitContainer1.Panel1.Controls.Add(f2);
}
}