设置控制父属性和使用Controls.Add()之间的区别?

jon*_*nny 4 c# user-controls

更具体地说,是这些陈述

ownerControl.GroupBox1.Controls.Remove(childControl);
ownerControl.Controls.Add(childControl);
Run Code Online (Sandbox Code Playgroud)

相当于

childControl.Parent = ownerControl;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 9

查看反射器,它看起来就像Parent调用Add(当新父项为非null时).Controls.Add把它从旧父母那里拿走的交易.实际上,以下是功能上等效的(当ownerControl不为null时):

ownerControl.Controls.Add(childControl); // note no Remove etc
Run Code Online (Sandbox Code Playgroud)

和:

childControl.Parent = ownerControl;
Run Code Online (Sandbox Code Playgroud)

反直觉,但快速测试表明它有效.