- Timestamp:
- 07/22/19 14:12:15 (5 years ago)
- Location:
- stable
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk merged: 17009,17126
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Core.Views
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Core.Views merged: 17009,17126
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs
r17097 r17147 34 34 [Content(typeof(ReadOnlyCheckedItemCollection<>), true)] 35 35 public partial class CheckedItemCollectionView<T> : ItemCollectionView<T> where T : class, IItem { 36 private bool suppressCheckedEvents; 37 36 38 public new ICheckedItemCollection<T> Content { 37 39 get { return (ICheckedItemCollection<T>)base.Content; } … … 82 84 if (doubleClick) { 83 85 e.NewValue = e.CurrentValue; 84 doubleClick = false;85 86 } else { 87 bool check = e.NewValue == CheckState.Checked; 86 88 var checkedItem = (T)itemsListView.Items[e.Index].Tag; 87 bool check = e.NewValue == CheckState.Checked; 88 if (Content.ItemChecked(checkedItem) != check) { 89 if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check); 90 else e.NewValue = e.CurrentValue; 91 } 89 if (Content.ItemChecked(checkedItem) == check) return; 90 91 suppressCheckedEvents = true; 92 try { 93 if (itemsListView.SelectedIndices.Count > 1 94 && itemsListView.SelectedIndices.Contains(e.Index)) { 95 if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (T)x.Tag), check); 96 else e.NewValue = e.CurrentValue; 97 } else { 98 if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check); 99 else e.NewValue = e.CurrentValue; 100 } 101 } finally { suppressCheckedEvents = false; } 92 102 } 93 103 } 94 protected void itemsListView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { 95 if (e.Clicks > 1) 96 doubleClick = true; 104 protected void itemsListView_MouseDown(object sender, MouseEventArgs e) { 105 doubleClick = e.Clicks > 1; 97 106 } 98 107 #endregion … … 103 112 Invoke(new CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged), sender, e); 104 113 else { 105 UpdateCheckedItemState(e.Items);114 if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items); 106 115 SetNumberOfCheckItems(); 107 116 } … … 130 139 131 140 private void UpdateCheckedItemState(IEnumerable<T> items) { 132 foreach (T item in items) { 133 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) { 134 var isChecked = Content.ItemChecked(item); 135 if (listViewItem.Checked != isChecked) 136 listViewItem.Checked = isChecked; 141 itemsListView.BeginUpdate(); 142 try { 143 foreach (T item in items) { 144 foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) { 145 var isChecked = Content.ItemChecked(item); 146 if (listViewItem.Checked != isChecked) 147 listViewItem.Checked = isChecked; 148 } 137 149 } 138 } 150 } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); } 139 151 } 140 152 }
Note: See TracChangeset
for help on using the changeset viewer.