public void AddControl(ExtendedControl control)
        {
            control.Window = this;

            rData.Initialize.Invoke(control, null);
            controls.Add(control);
            AddControlGrouped(control);
            ShouldSortControls = true;
        }
        private void RemoveControlGrouped(ExtendedControl control, Type wType = null)
        {
            if (control == null)
            {
                return;
            }

            if (wType == null)
            {
                wType = control.GetType();
            }

            if (!controlsGrouped.ContainsKey(wType))
            {
                return;
            }

            controlsGrouped[wType].Remove(control);

            if (wType.BaseType != null)
            {
                RemoveControlGrouped(control, wType.BaseType);
            }
        }
        private void AddControlGrouped(ExtendedControl control, Type wType = null)
        {
            if (control == null)
            {
                return;
            }

            if (wType == null)
            {
                wType = control.GetType();
            }

            if (!controlsGrouped.ContainsKey(wType))
            {
                controlsGrouped.Add(wType, new List <ExtendedControl>());
            }

            controlsGrouped[wType].Add(control);

            if (wType.BaseType != null)
            {
                AddControlGrouped(control, wType.BaseType);
            }
        }
 public void RemoveControl(ExtendedControl control)
 {
     rData.Destroy.Invoke(control, null);
     controls.Remove(control);
     RemoveControlGrouped(control);
 }