ParentForm和Owner的区别是什么?

15
在WinForms中,我们有objForm.Owner和objForm.Parent。这两者之间有什么区别。
我从表单A中以对话框的形式打开了表单B,并期望使用ParentForm属性从表单B访问表单A的公共属性,但最终使用Owner属性而不是ParentForm属性,因为ParentForm属性为null!!

你能展示一下出问题的代码吗?这篇文章或许有帮助:https://dev59.com/eF_Va4cB1Zd3GeqPPhDC - BradleyDotNET
1
如果谷歌不可用,可以在http://bytes.com/topic/visual-basic-net/answers/386153-owner-vs-parent-vs-parentform上查看。 - EZI
1
Raymond Chen在所有者与父母之间有一篇好文章:http://blogs.msdn.com/b/oldnewthing/archive/2010/03/15/9978691.aspx - John Koerner
2个回答

13

当一个子窗口被嵌入到父窗口中并且不能超出其边界时,父子窗口关系就存在了。例如像TextBox和Panel这样的子控件以及MDI窗口模型中的MDI子窗口嵌入在MDI父窗口中并作为其灰色客户端窗口的子窗口。

拥有窗口适用于顶层窗口,并主要控制它们的Z顺序。拥有窗口始终位于其所有者之上。它还会随其所有者一起最小化和恢复。示例包括工具窗口和对话框。

请注意,一个Form通常是一个顶层窗口,并且没有父窗口。因此,它不需要使用其Parent和ParentForm属性。但是,可以通过将其TopLevel属性设置为false来将其转换为子窗口。示例代码在此处


4
Form.Owner - 这是“拥有”此窗体的窗体。例如,查找/替换对话框将由记事本的主窗口拥有。如果您最小化主窗体,则拥有的窗体也会最小化;如果您恢复主窗体,则拥有的窗体也会恢复。

ContainerControl.ParentForm - 这是该 ContainerControl 最终放置在的窗体。

请查看此文章,其中还解释了 Parent。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接