/// <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 }
/// <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; }