예제 #1
0
        private void Listbox_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            ThisIndexHasBeenChangedProgrammatically = -1;
            if (Listbox.SelectedIndex == -1) //true when nothing is selected
            {
            }
            else if (!CheckIfThumbMouseButtonsHaveBeenPressed(e))
            {
                if (Listbox.Items.Count > 0)
                {
                    Listbox.MouseDown -= Listbox_MouseDown;
                    _mouseUpIndex      = Listbox.IndexFromPoint(Listbox.PointToClient(Cursor.Position));
                    HandleSelectionChange();
                    if (Listbox.SelectedIndex != -1)
                    {
                        OnSelectionReady?.Invoke(this, EventArgs.Empty);
                    }
                }
            }

            Listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
        }
예제 #2
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;
        }