/// <summary> /// Sets the item as selected /// </summary> /// <param name="itemIndex"></param> /// <param name="checkedValue"></param> public void SetItemSelected(int itemIndex, bool checkedValue) { if (checkedValue) { SelectedIndices.Add(Items[itemIndex]); } else { SelectedIndices.Remove(itemIndex); } }
internal void SelectItems(int highItem) { if (HighestItemSelected <= highItem) { for (int i = HighestItemSelected; i <= highItem; ++i) { SelectedIndices.Add(i); } } else { for (int i = HighestItemSelected; i > highItem; --i) { SelectedIndices.Remove(i); } } HighestItemSelected = highItem; }
public new void SetSelected(int index, bool value) { int num = (this.Items == null) ? 0 : this.Items.Count; if ((index < 0) || (index >= num)) { throw new ArgumentOutOfRangeException("index"); } if (this.SelectionMode == SelectionMode.None) { throw new InvalidOperationException("ListBoxInvalidSelectionMode"); } if (!disabledIndices.Contains(index)) { if (!value) { if (SelectedIndices.Contains(index)) { SelectedIndices.Remove(index); } } else { base.SetSelected(index, value); } } // Selected index deoes not change, however we should redraw the disabled item. else { if (!value) { // Remove selected item if it is in the list of selected indices. if (SelectedIndices.Contains(index)) { SelectedIndices.Remove(index); } } } Invalidate(GetItemRectangle(index)); }
protected override void OnVirtualItemsSelectionRangeChanged( ListViewVirtualItemsSelectionRangeChangedEventArgs e) { try { int start = _lastItemIndexClicked1; int end = _lastItemIndexClicked2; if (end < start) { int temp = start; start = end; end = temp; } if ((start >= 0) && (end >= 0)) { ArrayList toRemove = new ArrayList(); foreach (int index in SelectedIndices) { if ((index < start) || (index > end)) { toRemove.Add(index); } } if (toRemove.Count > 0) { foreach (int index in toRemove) { SelectedIndices.Remove(index); } } } ListViewVirtualItemsSelectionRangeChangedEventArgs te = new ListViewVirtualItemsSelectionRangeChangedEventArgs(start, end, e.IsSelected); base.OnVirtualItemsSelectionRangeChanged(te); } catch { } }
protected override void OnSelectedIndexChanged(EventArgs e) { int currentSelectedIndex = SelectedIndex; List <int> selectedDisabledIndices = new List <int>(); for (int i = 0; i < SelectedIndices.Count; i++) { if (disabledIndices.Contains(SelectedIndices[i])) { selectedDisabledIndices.Add(SelectedIndices[i]); SelectedIndices.Remove(SelectedIndices[i]); } } foreach (int index in selectedDisabledIndices) { IndexEventArgs args = new IndexEventArgs(index); OnDisabledItemSelected(this, args); } if (currentSelectedIndex == SelectedIndex) { base.OnSelectedIndexChanged(e); } }
/* * public ObjectCollection Items * { * get{return _dataSource.dataArray;} * set{_dataSource.dataArray = value;} * } */ public void SetSelected(int index, bool value) { if (index < 0 || index >= Items.Count) { throw new ArgumentOutOfRangeException("Index of out range"); } if (SelectionMode == SelectionMode.None) { throw new InvalidOperationException(); } if (value) { SelectedIndices.Add(index); tableView.SelectRows(new NSIndexSet((uint)index), true); } else { SelectedIndices.Remove(index); tableView.DeselectRow(index); } }
private void OnSelectedIndices_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add && ChangeSource != ChangeSourceEnum.FromSelectedItems) { var index = (int)e.NewItems[0]; if (index >= Items.Count || index < 0) { if (SelectedIndices.IndexOf(index) != -1) { ChangeSource = ChangeSourceEnum.FromSelectedItems; SelectedIndices.Remove(index); ChangeSource = ChangeSourceEnum.None; } return; } if (SelectedIndices.Where(x => x == index).Count() > 1) { ChangeSource = ChangeSourceEnum.FromSelectedItems; SelectedItems.Remove(index); ChangeSource = ChangeSourceEnum.None; return; } ((MultiSelectItem)itemContainers[index]).IsSelected = true; contentPresenter.Children.Add(GeneratePanelItem(Items[index])); ChangeSource = ChangeSourceEnum.FromSelectedIndices; SelectedItems.Add(Items[index]); if (!(SelectedItems is INotifyCollectionChanged)) { OnSelectedItems_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, Items[index])); } RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, new object[0], new object[1] { Items[index] })); } else if (e.Action == NotifyCollectionChangedAction.Remove && ChangeSource != ChangeSourceEnum.FromSelectedItems) { int index = (int)e.OldItems[0]; if (index >= Items.Count || index < 0) { return; } ((MultiSelectItem)itemContainers[index]).IsSelected = false; contentPresenter.Children.RemoveAt(e.OldStartingIndex); ChangeSource = ChangeSourceEnum.FromSelectedIndices; var item = SelectedItems[index]; var indexSelectedItems = SelectedItems.IndexOf(item); SelectedItems.Remove(item); if (!(SelectedItems is INotifyCollectionChanged)) { OnSelectedItems_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, indexSelectedItems)); } RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, new object[1] { Items[index] }, new object[0])); } else if (e.Action == NotifyCollectionChangedAction.Reset && ChangeSource != ChangeSourceEnum.FromSelectedItems) { foreach (var item in itemContainers) { ((MultiSelectItem)item).IsSelected = false; } contentPresenter.Children.Clear(); ChangeSource = ChangeSourceEnum.FromSelectedIndices; SelectedItems.Clear(); if (!(SelectedItems is INotifyCollectionChanged)) { OnSelectedItems_CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } RaiseEvent(new System.Windows.Controls.SelectionChangedEventArgs(SelectionChangedEvent, new object[0], new object[0])); } ChangeSource = ChangeSourceEnum.None; }
/// <summary> /// Update the control. The base method causes the control to become active and consumes the left-click if clicked. /// </summary> public override void Update() { if (Root.WasMouseLeftClick) { if (Root.IsMouseOver(Rectangle)) { Root.ConsumeLeftClick(); if (mouseOverIndex != -1) { if (Multiselect) { if (SelectedIndices.Contains(mouseOverIndex)) { SelectedIndices.Remove(mouseOverIndex); } else { SelectedIndices.Add(mouseOverIndex); } } if (mouseOverIndex == SelectedIndex) { OnItemConfirmed(this, SelectedItem); } else { SelectedIndex = mouseOverIndex; } } else { SelectedIndex = -1; } this.Activate(); } } if (Root.WasKeyPressed(Keys.Down) && this.IsActive) { if (SelectedIndex < Items.Count - 1) { SelectedIndex++; } } if (Root.WasKeyPressed(Keys.Up) && this.IsActive) { if (SelectedIndex > 0) { SelectedIndex--; } } if (Root.WasKeyPressed(Keys.Home)) { if (Items.Count > 0) { SelectedIndex = 0; } } if (Root.WasKeyPressed(Keys.End)) { SelectedIndex = Items.Count - 1; } if (Root.WasKeyPressed(Keys.Enter)) { if (SelectedIndex != -1) { OnItemConfirmed(this, SelectedItem); } if (Multiselect) { if (SelectedIndices.Contains(SelectedIndex)) { SelectedIndices.Remove(SelectedIndex); } else { SelectedIndices.Add(SelectedIndex); } } } base.Update(); }