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

时间:2009-06-07 09:03:29

标签: c# user-controls

更具体地说,是这些陈述

ownerControl.GroupBox1.Controls.Remove(childControl);
ownerControl.Controls.Add(childControl);

相当于

childControl.Parent = ownerControl;

1 个答案:

答案 0 :(得分:9)

查看反射器,看起来Parent只调用Add(当新父项为非空时)。 Controls.Add处理将其从旧父母手中夺走的问题。实际上,以下是功能相同的(当ownerControl不为空时):

ownerControl.Controls.Add(childControl); // note no Remove etc

childControl.Parent = ownerControl;

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