/// <summary> /// Applies the given state to the given item. /// Raises events, too. /// </summary> /// <param name="item">The item.</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 SetTriStateToItem( ListViewItem item, ListViewAction action, int stateImageIndex, bool raiseEvents ) { bool canSet = true; if ( raiseEvents ) { ItemCheckEventArgs args = new ItemCheckEventArgs( item.Index, ConvertStateImageIndexToCheckState( stateImageIndex ), ConvertStateImageIndexToCheckState( item.StateImageIndex ) ); OnItemCheck( args ); ItemCheckTriStateEventArgs triArgs = new ItemCheckTriStateEventArgs( item, action, ConvertStateImageIndexToCheckState( stateImageIndex ), ConvertStateImageIndexToCheckState( item.StateImageIndex ) ); OnItemCheckTriState( triArgs ); canSet = !triArgs.Cancel; } if ( canSet ) { // Actually set. // THIS IS THE ONLY PLACE to set. item.StateImageIndex = stateImageIndex; if ( raiseEvents ) { ItemCheckedEventArgs args = new ItemCheckedEventArgs( item ); OnItemChecked( args ); ItemCheckedTriStateEventArgs triArgs = new ItemCheckedTriStateEventArgs( item, action, item.StateImageIndex ); OnItemCheckedTriState( triArgs ); } } }
/// <summary> /// Raises the <see cref="E:ItemCheckedTriState"/> event. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesListView.ItemCheckedTriStateEventArgs"/> instance containing the event data.</param> protected virtual void OnItemCheckedTriState( ItemCheckedTriStateEventArgs args ) { if ( ItemCheckedTriState != null ) { ItemCheckedTriState( this, args ); } CheckPerformAutoStepsTriStateChecked( args ); }
// ------------------------------------------------------------------ #endregion #region Private methods. // ------------------------------------------------------------------ /// <summary> /// If configured, some auto-steps could be performed after a check. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesListView.ItemCheckedTriStateEventArgs"/> instance containing the event data.</param> private void CheckPerformAutoStepsTriStateChecked( ItemCheckedTriStateEventArgs args ) { if ( args.Action == ListViewAction.ByKeyboard || args.Action == ListViewAction.ByMouse ) { if ( AutoCheckSelected ) { if ( args.CheckState == CheckState.Checked ) { ChangeItemsCheckStates( ItemsCheckState.CheckAllSelectedItems ); } else if ( args.CheckState == CheckState.Unchecked ) { ChangeItemsCheckStates( ItemsCheckState.UncheckAllSelectedItems ); } } } }