/// <summary> /// Raises the MouseDown event. /// </summary> /// <param name="e">A MouseEventArgs that contains the event data.</param> protected override void OnMouseDown(MouseEventArgs e) { if (e.Button == MouseButtons.Left && ShowPlusMinus) { if (!Focused) { Focus(); //? } CTreeNode toggleNode = null; this.Nodes.TraverseNodes(node => node.Visible && node.Nodes.Count > 0, node => { Point cursorLocation = e.Location; cursorLocation.Offset(-AutoScrollPosition.X, -AutoScrollPosition.Y); if (node.PlusMinus != null && node.PlusMinus.IsUnderMouse(cursorLocation)) { toggleNode = node; } }); ClearSelection(); if (toggleNode != null) { toggleNode.Toggle(); if (SelectionMode != CTreeViewSelectionMode.None) { toggleNode.IsSelected = true; } } } base.OnMouseDown(e); }