110,533
社区成员
发帖
与我相关
我的任务
分享
public virtual void Add(Control value)
{
if (value != null)
{
if (value.GetTopLevel())
{
throw new ArgumentException(SR.GetString("TopLevelControlAdd"));
}
if (this.owner.CreateThreadId != value.CreateThreadId)
{
throw new ArgumentException(SR.GetString("AddDifferentThreads"));
}
Control.CheckParentingCycle(this.owner, value);
if (value.parent == this.owner)
{
value.SendToBack();
}
else
{
if (value.parent != null)
{
value.parent.Controls.Remove(value);
}
base.InnerList.Add(value);
if (value.tabIndex == -1)
{
int num = 0;
for (int i = 0; i < (this.Count - 1); i++)
{
int tabIndex = this[i].TabIndex;
if (num <= tabIndex)
{
num = tabIndex + 1;
}
}
value.tabIndex = num;
}
this.owner.SuspendLayout();
try
{
Control parent = value.parent;
try
{
value.AssignParent(this.owner);
}
finally
{
if ((parent != value.parent) && ((this.owner.state & 1) != 0))
{
value.SetParentHandle(this.owner.InternalHandle);
if (value.Visible)
{
value.CreateControl();
}
}
}
value.InitLayout();
}
finally
{
this.owner.ResumeLayout(false);
}
LayoutTransaction.DoLayout(this.owner, value, PropertyNames.Parent);
this.owner.OnControlAdded(new ControlEventArgs(value));
}
}
}