/// <summary> Remove child control from parent, but do not dispose of it or its children, and maintain all child relationship to it. Control can be reattached</summary>
 public static void Detach(GLBaseControl child)
 {
     if (child.Parent != null) // if attached
     {
         GLBaseControl parent = child.Parent;
         parent.RemoveControl(child, false, false);
         parent.InvalidateLayout(null);
         child.NeedRedraw = true;        // next time, it will need to be drawn
     }
 }
 /// <summary> Remove child control from parent, and disposes of it and all its children. Control is now not reattachable.</summary>
 public static void Remove(GLBaseControl child)
 {
     if (child.Parent != null) // if attached
     {
         GLBaseControl parent = child.Parent;
         parent.RemoveControl(child, true, true);
         parent.InvalidateLayout(null);          // invalidate parent, and indicate null so it knows the child has been removed
         child.NeedRedraw = true;                // next time, it will need to be drawn if reused
     }
 }