Esempio n. 1
0
        /// <summary>
        /// Manages the state of the check box.
        /// </summary>
        /// <param name="node">The node.</param>
        /// <returns></returns>
        public ASTreeViewCheckboxState ManageCheckboxState(ASTreeViewNode node)
        {
            if (node.ChildNodes.Count == 0)
            {
                return(node.CheckedState);
            }

            int totalChildrenCount    = node.ChildNodes.Count;
            int checkedNodesCount     = 0;
            int halfCheckedNodesCount = 0;

            foreach (ASTreeViewNode curChildNode in node.ChildNodes)
            {
                ASTreeViewCheckboxState curState = this.ManageCheckboxState(curChildNode);

                if (curState == ASTreeViewCheckboxState.Checked)
                {
                    checkedNodesCount++;
                }

                if (curChildNode.CheckedState == ASTreeViewCheckboxState.Checked && curChildNode.ChildNodes.Count > 0)
                {
                    checkedNodesCount++;
                }

                if (curChildNode.CheckedState == ASTreeViewCheckboxState.HalfChecked && curChildNode.ChildNodes.Count > 0)
                {
                    halfCheckedNodesCount++;
                }
            }

            if (halfCheckedNodesCount > 0)
            {
                node.CheckedState = ASTreeViewCheckboxState.HalfChecked;
            }
            else
            {
                if (checkedNodesCount == 0)
                {
                    node.CheckedState = ASTreeViewCheckboxState.Unchecked;
                }
                else if (checkedNodesCount == totalChildrenCount)
                {
                    node.CheckedState = ASTreeViewCheckboxState.Checked;
                }
                else
                {
                    node.CheckedState = ASTreeViewCheckboxState.HalfChecked;
                }
            }

            return(ASTreeViewCheckboxState.Unchecked);//return unchecked if not leaf node
        }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ASTreeViewNodeCheckedEventArgs"/> class.
 /// </summary>
 /// <param name="nodeText">The node text.</param>
 /// <param name="nodeValue">The node value.</param>
 /// <param name="checkedState">State of the checked.</param>
 public ASTreeViewNodeCheckedEventArgs(string nodeText, string nodeValue, ASTreeViewCheckboxState checkedState)
 {
     this._nodeText     = nodeText;
     this._nodeValue    = nodeValue;
     this._checkedState = checkedState;
 }