Ejemplo n.º 1
0
        /// <summary>
        ///     Handles only single selection with keyboard.
        /// </summary>
        public void HandleKeyUp(int selectedIndex)
        {
            OnSelectionNotReady?.Invoke(this, EventArgs.Empty);
            Listbox.SelectedIndexChanged -= Listbox_SelectedIndexChanged;
            Listbox.SelectedIndex         = selectedIndex;
            if (Listbox.SelectedIndex == -1)
            {
                OnSelectionReady?.Invoke(this, EventArgs.Empty);
            }
            else
            {
                _mouseDownIndex = selectedIndex;
                _mouseUpIndex   = selectedIndex;
                SelectionOld    = GetListboxItemsSelection(Listbox.Items.Count, Listbox.SelectedIndices);
                SelectedItemsOrdered?.Clear();
                SelectedItemsOrdered = new List <string> {
                    Listbox.SelectedItem.ToString()
                };
                SelectedIndexesOrdered?.Clear();
                SelectedIndexesOrdered = new List <int> {
                    Listbox.SelectedIndex
                };
                HandleSelectionChange();
                OnSelectionReady?.Invoke(this, EventArgs.Empty);
            }

            Listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
        }
Ejemplo n.º 2
0
        public void Cancel(bool unsubscribeToEvents = true)
        {
            if (unsubscribeToEvents)
            {
                UnsubscribeToEvents();
                Listbox = null;
            }

            SelectedIndexesOrdered?.Clear();
            SelectedItemsOrdered?.Clear();
            _mouseDownIndex           = -1;
            _posY                     = -1;
            _ctrlPressed              = false;
            _shiftPressed             = false;
            _mouseUpIndex             = -1;
            SelectionOld              = null;
            _shiftSelectionStartIndex = -1;
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     To be used when one selection is removed programmatically and not by mouse.
        /// </summary>
        private void Listbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            SetPressedModifierKeys();
            if (_ctrlPressed || _shiftPressed)
            {
                return;
            }
            var selectionCurrent    = GetListboxItemsSelection(Listbox.Items.Count, Listbox.SelectedIndices);
            var selectionChangeType = DetermineSelectionChangeType(SelectionOld, selectionCurrent,
                                                                   ThisIndexHasBeenChangedProgrammatically, ThisIndexHasBeenChangedProgrammatically);

            SelectedIndexesOrdered = GetSelectedIndexesInOrder(selectionChangeType, selectionCurrent,
                                                               SelectedIndexesOrdered, ThisIndexHasBeenChangedProgrammatically,
                                                               ThisIndexHasBeenChangedProgrammatically, Listbox);
            if (SelectedItemsOrdered != null)
            {
                if (SelectedItemsOrdered.Count != 0)
                {
                    SelectedItemsOrdered.RemoveAt(0);
                }
            }
            SelectionOld = GetListboxItemsSelection(Listbox.Items.Count, Listbox.SelectedIndices);
        }