コード例 #1
0
 /// <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);
     }
 }
コード例 #2
0
        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;
        }
コード例 #3
0
        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));
        }
コード例 #4
0
ファイル: FixedListView.cs プロジェクト: shellohunter/mir2
 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
     {
     }
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        /*
         * 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);
            }
        }
コード例 #7
0
ファイル: MultiSelect.cs プロジェクト: hossein-abdn/Infra.Wpf
        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;
        }
コード例 #8
0
 /// <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();
 }