public virtual void Add (Control value)
{
if (value == null)
return;
Form form_value = value as Form;
Form form_owner = owner as Form;
//TODO:
bool owner_permits_toplevels = true;
// (owner is MdiClient) || (form_owner != null && form_owner.IsMdiContainer);
bool child_is_toplevel = value.GetTopLevel ();
bool child_is_mdichild = false;
//form_value != null && form_value.IsMdiChild;
if (child_is_toplevel && !(owner_permits_toplevels && child_is_mdichild))
throw new ArgumentException ("Cannot add a top level control to a control.", "value");
/*
if (child_is_mdichild && form_value.MdiParent != null && form_value.MdiParent != owner && form_value.MdiParent != owner.Parent) {
throw new ArgumentException ("Form cannot be added to the Controls collection that has a valid MDI parent.", "value");
}
*/
//value.recalculate_distances = true;
if (Contains (value))
{
owner.PerformLayout ();
return;
}
if (value.parent != null)
{
value.parent.Controls.Remove (value);
}
all_controls = null;
list.Add (value);
value.ChangeParent (owner);
//value.InitLayout();
//if (owner.Visible)
// owner.UpdateChildrenZOrder();
owner.PerformLayout (value, "Parent");
owner.OnControlAdded (new ControlEventArgs (value));
}