Winform中的parent和owner属性
在研究父子窗口如何进行通讯,相互调用,涉及到了“指针”,经过一番考古,找到了以下内容
一般的方法是这样的:
建立一个带参数的form构造函数以及一个成员变量,在form实例化时将父窗口的“指针”传给子窗口,然后再使用。
下面说说新的考古发现:
winform:
包含Form owner和Control parent两个属性,前一个表示父窗口,是form特有的属性,后一个是表示控件的父窗口,是control中的属性;
继承自ContainerControl,间接继承自control;
动态只用中(new),在构造函数中,两者都是null;
动态只用中(new),在load的函数中,两者都是null
动态只用中(new),两者都需要使用者赋值,系统不会自动指定;
是否指定owner的区别:在子窗口可以最小化的情况下测试:ShowDialog(Model)是没什么区别,父窗口都会随之最小化,但在Show(Modeless)中,指定了owner之后,子窗口最小化之后,仍然停留在父窗口的上层,可以正常恢复等,但如果没有指定,则会因为失去活动焦点而被放在后台。
MSDN上的引文
获取或设置拥有此窗体的窗体。若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Form2 归窗体 Form1 所有,则关闭或最小化 Form1 时,也会关闭或最小化 Form2。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用OwnedForms属性。
UserControl:
包含Control parent一个属性,表示控件的父窗口;
继承自control;
静态使用中(作为form中的控件),在构造函数中,是null;
静态使用中(作为form中的控件),在load的函数中,被赋值为父窗口
静态使用中(作为form中的控件),系统会自动赋值;