private void AddInternal <TControl> (TControl instance) where TControl : Control { var t = typeof(TControl); if ((WaitingForFocusBeneficiary != null) && (WaitingForFocusBeneficiary != instance)) { WaitingForFocusBeneficiary.FocusBeneficiary = instance; WaitingForFocusBeneficiary = null; } var index = NextIndex++; if (index >= Children.Count) { Children.Add(instance); } else { var previous = Children[index]; if (previous == instance) { return; } Children[index] = instance; CurrentRemovedControls.Add(previous); } }
public void Finish() { var temp = PreviousRemovedControls; PreviousRemovedControls = CurrentRemovedControls; CurrentRemovedControls = temp; CurrentRemovedControls.Clear(); // Trim off any excess controls for (int i = Children.Count - 1; i >= NextIndex; i--) { PreviousRemovedControls.Add(Children[i]); Children.RemoveAt(i); } WaitingForFocusBeneficiary = null; }