protected virtual void HandlePick(MouseEventArgs e) { SelectMode selectMode = InputScheme.GetSelectMode(Control.ModifierKeys); ISelectionContext selection = DesignView.Context.As <ISelectionContext>(); var hits = Pick(e); bool multiSelect = DragOverThreshold; if (multiSelect == false && hits.Any()) { List <object> singleHit = new List <object>(); if (selectMode == SelectMode.Normal) { m_hitIndex++; if (m_hitIndex >= hits.Count()) { m_hitIndex = 0; } singleHit.Add(hits.ElementAt(m_hitIndex)); } else { singleHit.Add(hits.ElementAt(0)); } hits = singleHit; } switch (selectMode) { case SelectMode.Normal: selection.SetRange(hits); break; case SelectMode.Extend: selection.AddRange(hits); break; case SelectMode.Toggle: selection.ToggleRange(hits); break; case SelectMode.Remove: selection.RemoveRange(hits); break; default: break; } }