/// <summary> /// Raises the <see cref="E:ItemCheckTriState"/> event. /// </summary> /// <param name="args">The <see cref="ZetaLib.Windows.Controls.TriStateCheckBoxesListView.ItemCheckTriStateEventArgs"/> instance containing the event data.</param> protected virtual void OnItemCheckTriState( ItemCheckTriStateEventArgs args ) { if ( ItemCheckTriState != null ) { ItemCheckTriState( this, args ); } }
/// <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 ); } } }