1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- namespace System.Windows.Forms
- {
- public partial class CheckedListBox
- {
- private class Item : INotifyPropertyChangedImpl, IComparable
- {
- private CheckedListBox owner { get; }
- public object Value { get; set; }
- private bool? isChecked;
- public bool? IsChecked
- {
- get => isChecked;
- set
- {
- if (isChecked != value)
- {
- owner.OnItemCheck(new ItemCheckEventArgs(owner.Items.IndexOfItem(this), BoolToCheckState(value), BoolToCheckState(isChecked)));
- RaiseAndSetIfChanged(ref isChecked, value);
- }
- }
- }
- private bool? CheckStateToBool(CheckState check)
- {
- return check == CheckState.Unchecked ? false :
- (check == CheckState.Checked ? true : null);
- }
- private CheckState BoolToCheckState(bool? check)
- {
- return check == false ? CheckState.Unchecked :
- (check == true ? CheckState.Checked : CheckState.Indeterminate);
- }
- public void SetState(CheckState check)
- {
- IsChecked = CheckStateToBool(check);
- }
- public int CompareTo(object obj)
- {
- if (Value is IComparable val && obj is Item item)
- return val.CompareTo(item.Value);
- return -1;
- }
- public Item(CheckedListBox owner, object value)
- {
- this.owner = owner;
- Value = value;
- }
- }
- }
- }
|