コード例 #1
0
		/// <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 );
				}
			}
		}
コード例 #2
0
		/// <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 );
		}
コード例 #3
0
		// ------------------------------------------------------------------
		#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 );
					}
				}
			}
		}