コード例 #1
0
        /// <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);
        }