/// <summary> /// If configured, some auto-steps could be performed after a check. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesTreeView.TreeViewTriStateEventArgs"/> instance containing the event data.</param> private void CheckPerformAutoStepsAfterTriStateCheck( TreeViewTriStateEventArgs args) { if (args.Action == TreeViewAction.ByKeyboard || args.Action == TreeViewAction.ByMouse) { if (AutoCheckChilds) { if (args.CheckState == CheckState.Checked) { ChangeNodesCheckStates( args.Node, TreeViewEx.NodesCheckState. CheckAllChilds); } else if (args.CheckState == CheckState.Unchecked) { ChangeNodesCheckStates( args.Node, TreeViewEx.NodesCheckState. UncheckAllChilds); } } // -- if (AutoCheckParents) { ChangeNodesCheckStates( args.Node, TreeViewEx.NodesCheckState. UpdateParentStates); } } }
/// <summary> /// Raises the <see cref="E:AfterTriStateCheck"/> event. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesTreeView.TreeViewTriStateEventArgs"/> instance containing the event data.</param> protected virtual void OnAfterTriStateCheck( TreeViewTriStateEventArgs args) { if (AfterTriStateCheck != null) { AfterTriStateCheck(this, args); } CheckPerformAutoStepsAfterTriStateCheck(args); }
/// <summary> /// Applies the given state to the given node. /// Raises events, too. /// </summary> /// <param name="node">The node.</param> /// <param name="action">The action.</param> /// <param name="stateImageIndex">Index of the state image.</param> /// <param name="raiseEvents">if set to <c>true</c> [raise events].</param> private void SetTriStateToNode( TreeNode node, TreeViewAction action, int stateImageIndex, bool raiseEvents) { bool canSet = true; if (raiseEvents) { TreeViewCancelEventArgs args = new TreeViewCancelEventArgs(node, false, action); OnBeforeCheck(args); TreeViewCancelTriStateEventArgs triArgs = new TreeViewCancelTriStateEventArgs( node, args.Cancel, action, node.StateImageIndex, stateImageIndex); OnBeforeTriStateCheck(triArgs); canSet = !triArgs.Cancel; } if (canSet) { // Actually set. // THIS IS THE ONLY PLACE to set. node.StateImageIndex = stateImageIndex; if (raiseEvents) { TreeViewEventArgs args = new TreeViewEventArgs(node, action); OnAfterCheck(args); TreeViewTriStateEventArgs triArgs = new TreeViewTriStateEventArgs( node, action, node.StateImageIndex); OnAfterTriStateCheck(triArgs); } } }
/// <summary> /// If configured, some auto-steps could be performed after a check. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesTreeView.TreeViewTriStateEventArgs"/> instance containing the event data.</param> private void CheckPerformAutoStepsAfterTriStateCheck( TreeViewTriStateEventArgs args ) { if ( args.Action == TreeViewAction.ByKeyboard || args.Action == TreeViewAction.ByMouse ) { if ( AutoCheckChilds ) { if ( args.CheckState == CheckState.Checked ) { ChangeNodesCheckStates( args.Node, TriStateCheckBoxesTreeView.NodesCheckState. CheckAllChilds ); } else if ( args.CheckState == CheckState.Unchecked ) { ChangeNodesCheckStates( args.Node, TriStateCheckBoxesTreeView.NodesCheckState. UncheckAllChilds ); } } // -- if ( AutoCheckParents ) { ChangeNodesCheckStates( args.Node, TriStateCheckBoxesTreeView.NodesCheckState. UpdateParentStates ); } } }
/// <summary> /// Raises the <see cref="E:AfterTriStateCheck"/> event. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesTreeView.TreeViewTriStateEventArgs"/> instance containing the event data.</param> protected virtual void OnAfterTriStateCheck( TreeViewTriStateEventArgs args ) { if ( AfterTriStateCheck != null ) { AfterTriStateCheck( this, args ); } CheckPerformAutoStepsAfterTriStateCheck( args ); }
/// <summary> /// Applies the given state to the given node. /// Raises events, too. /// </summary> /// <param name="node">The node.</param> /// <param name="action">The action.</param> /// <param name="stateImageIndex">Index of the state image.</param> /// <param name="raiseEvents">if set to <c>true</c> [raise events].</param> private void SetTriStateToNode( TreeNode node, TreeViewAction action, int stateImageIndex, bool raiseEvents ) { bool canSet = true; if ( raiseEvents ) { TreeViewCancelEventArgs args = new TreeViewCancelEventArgs( node, false, action ); OnBeforeCheck( args ); TreeViewCancelTriStateEventArgs triArgs = new TreeViewCancelTriStateEventArgs( node, args.Cancel, action, node.StateImageIndex, stateImageIndex ); OnBeforeTriStateCheck( triArgs ); canSet = !triArgs.Cancel; } if ( canSet ) { // Actually set. // THIS IS THE ONLY PLACE to set. node.StateImageIndex = stateImageIndex; if ( raiseEvents ) { TreeViewEventArgs args = new TreeViewEventArgs( node, action ); OnAfterCheck( args ); TreeViewTriStateEventArgs triArgs = new TreeViewTriStateEventArgs( node, action, node.StateImageIndex ); OnAfterTriStateCheck( triArgs ); } } }