子形式的MdiParent属性

时间:2013-07-16 01:37:30

标签: visual-studio-2012

我正在尝试在Microsoft Visual Studio 2012中对MDI应用程序进行一些练习,但似乎我做错了。

我制作了一个新的 Windows窗体应用程序项目,并将第一个窗体的 IsMdiContainer 属性更改为 True 。然后我通过右键单击解决方案资源管理器中的项目并选择添加 - 新项目 - Windows窗体来添加新表单。

我正在尝试将form2的 MdiParent 属性设置为MDI容器表单,但似乎form2没有 MdiParent 属性。 这是form2按字母顺序排序的属性。

enter image description here

当然,我可以通过这种方式打开form2:

form2 newMDIChild = new form2();
newMDIChild.MdiParent = this;
newMDIChild.Show();

我只是想知道为什么表单没有 MDIParent 属性。 根据{{​​3}},子表单具有 MdiParent 属性。

非常感谢任何形式的帮助。

1 个答案:

答案 0 :(得分:2)

你做得对,实例化新表单并在那里分配MdiParent。真的有这样的属性,并且在你的代码中你正在使用它:

newMDIChild.MdiParent = this;

这是完全正常的,也是正常的做法。

现在,你所指的是设计师没有展示它,这也是事实。这并不意味着该属性不存在(它确实存在,并且您实际上正在使用它!)。为什么它不在设计师属性表中是另一个历史,完全无关紧要,但我想这与在设计时正确设置MdiParent很难(即使不是不可能)的事实有关。如果您考虑它,它必须包含另一个表单的实例(将IsMdiContainer设置为true)。在设计时,您没有任何实例,因为它们是在程序运行时创建的。您无法预先设置它,因为您通常必须将另一个表单传递给它,而在设计时您无法知道。