我在左侧的面板中有一个可以点击的主窗体,具体取决于您点击新打开的窗体类型。在righti有另一个面板,我想停靠点击左侧打开的表格。
如何在右侧面板中将表单添加到另一个列表中?下面的代码的问题是它添加第一个元素罚款。然而,当我添加第二个元素时,它们都在面板后面消失了:/
private void addToPanel2(Form o)
{
if (o is Form)
{
if (panel2.Controls.Count == 0)
{
o.MdiParent = this;
panel2.Controls.Add(o);
o.Dock = DockStyle.Top;
o.Show();
}
else
{
//then we know that this is an addable data item
foreach (Form obj in panel2.Controls)
{
if(obj.GetType().Name.Equals(o.GetType().Name))
{
//we dont want to add it as the data type is already open
MessageBox.Show("This data item must already be open. Please Check.");
}
else
{
// add it as its not in there
Form f = (Form)obj;
f.MdiParent = this;
f.Dock = DockStyle.Top;
f.Show();
}
}
}
}
感谢
答案 0 :(得分:2)
这是不可能的,MDI子表单不能是面板的子控件。向面板添加非MDI表单也是一个不确定的主张,但是受到支持。调用其SetTopLevel()方法,传递false,将其Visible属性设置为true。您还必须将其FormBorderStyle属性设置为None,它不再作为顶级窗口正常运行。
这只是将它变成UserControl。你最好把它变成一个UserControl,它可以使用更少的资源并且记录得更好。