2011-10-08 90 views
0

我正在使用SplitContainer垂直分割MDI表单。在左侧面板上我有一个树形控件,在右侧面板上显示了子窗体。我试图确保在任何时候只有一个子窗体的实例是开放的。为此,我正在检查MdiChildren计数。但是,将子窗体添加到拆分容器的右侧面板后,mdi子窗体计数重置为零。与MDI和SplitContainer冲突

subjectForm.MdiParent = this; 
Console.WriteLine("B => " + this.MdiChildren.Length); 
this.splitContainer1.Panel2.Controls.Add(subjectForm); 
Console.WriteLine("A => " + this.MdiChildren.Length); 

在上面的代码示例中,这是我得到

B => 1的反应; A => 0

任何想法我错了?

+0

您不能在面板中放置MDI子窗口。 Winforms忘记抛出异常。当你想这样做时,不要使用MDI。 –

+0

有什么其他方法可以实现这一目标?我应该用Splitter吗?但MS建议否则。或者有没有办法摆脱SplitContainer中的右侧面板。 – cosmos

+0

只需在面板上放置一个UserControl。 –

回答

0

花了很长时间试图与SplitContainer一起工作后,我用分离器替换了它,并且按预期工作。但是,我仍然不确定分离式容器控制的实用性或需求。