Control.FindForm和ContainerControl.ParentForm有什么区别?

14

我想知道Control.FindFormContainerControl.ParentForm之间是否有任何功能上的 (或其他方面的) 区别? 在创建自己的用户控件时,我一直在使用.ParentForm,但是否有任何理由使用 .FindForm 会是更好的选择呢?从我所了解的情况来看,它们总是返回相同的表单(即用户控件所在的表单或null)。.ParentForm只是调用了.FindForm吗?还是两者在某些情况下可能不同(例如对于 mdi 窗口)?

1个回答

16

它们有微妙的不同。当在顶级表单上调用ParentForm时,它将返回null,因为它没有父级。但FindForm()不会返回null,它返回自身。而且ParentForm会进行安全要求,但FindForm()则不会。它们在内部实现上基本相同。Winforms本身根本不使用ParentForm,我建议忽略它。


4
好的,谢谢。你能否进一步解释一下ParentForm的安全需求是什么意思?或者给我指一些参考资料吗?ParentForm的安全需求是指父级窗体在安全方面所需要满足的要求。你可以查看相关的技术文档或安全标准来了解更多信息。 - TKTS
3
CodeAccessPermission 类。Winforms 允许对控件进行沙盒隔离,以防止其干扰父控件。这方面的文档记录不充分,但在 99.9% 的 Winforms 项目中并不相关。 - Hans Passant

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