簡體   English   中英

listbox selectionmode = multiextended如何擺脫使用mousekey選擇項目

[英]listbox selectionmode = multiextended how to get rid of selecting items with mousekey down

將列表框選擇模式設置為multiextended時,我觀察了三種選擇項目的方法:

  1. 按住Shift鍵的同時按下鼠標鍵
  2. 按住Ctrl鍵的同時按下鼠標鍵
  3. 將鼠標移動到未選擇的項目上時按鼠標鍵

1和2.正是我想要的行為,但我不想要3.因為后來我想通過用鼠標上下移動所有選定的項目來重新排列項目。

如何擺脫3.?

我需要像Winamp中的播放列表一樣的行為。 通過拖動和復制粘貼項重新排列項目

ListBox類有兩個SelectionMode。 多個或擴展。

在“多種”模式下,您可以通過單擊選擇或取消選擇任何項目。 在擴展模式下,您需要按住Ctrl鍵選擇其他項目,或按住Shift鍵選擇一系列項目。

只需要設置適當的屬性。

您需要“擴展”模式,但除非按下移位或控制鍵,否則不希望鼠標拖動選擇。 而不是試圖退出功能,你應該添加功能。 試試這個。

  • 將表單上的“KeyPreview”設置為“True”。
  • 將ListBox的SelectionMode設置回“MultiSimple”。

使用此代碼添加按下Control或Shift時選擇項目的功能。

Public Class Form1
    Private bSelectMode As Boolean = False

    Private Sub Form1_KeyUpOrDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, Me.KeyUp
        bSelectMode = e.Control OrElse e.Shift
    End Sub

    Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove
        If bSelectMode AndAlso e.Button <> Windows.Forms.MouseButtons.None Then
            Dim selectedindex = ListBox1.IndexFromPoint(e.Location)

            If selectedindex <> -1 Then
                ListBox1.SelectedItems.Add(ListBox1.Items(selectedindex))
            End If
        End If
    End Sub
End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM