我看到这个线程很旧,也许有一种简单或更优雅的方式来取消选择列表框项。但是,我想出了一种满足我需求的方法。在我的情况下,我希望列表框仅在单击相同项目时取消选择。如果单击了一个新项目,它将被正常选择。我不得不使用两个静态变量(一个布尔值和“旧选择”占位符)。
可能有一个更简单的方法。但是,我是新手,找不到它。希望这可以帮助。将 selectedindex 设置为 -1 会取消选择所有内容。或者同样有效的是listboxName .ClearSelected()
Private Sub lstPendingQuotes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstPendingQuotes.Click
Static blnSelectable As Boolean = True 'use static boolean to retain value between calls
Static objOldSelected As Object = lstPendingQuotes.SelectedIndex 'use old selected in case a different index is selected
'if nothing is already selected (as in first form open) allow the selection but change boolean to false and set the OldSelected variable to the current selection
If blnSelectable Then
blnSelectable = False
objOldSelected = lstPendingQuotes.SelectedIndex
ElseIf lstPendingQuotes.SelectedIndex = objOldSelected Then 'if an item is selected and the same item is clicked un-select all and reset boolean to true for a new possible selection
lstPendingQuotes.SelectedIndex = -1 'can substitute lstPendingQuotes.ClearSelected()
blnSelectable = True
Else 'If a different index is chosen allow the new selection and change boolean to false so if the same item is clicked it will un-select
objOldSelected = lstPendingQuotes.SelectedIndex
blnSelectable = False
End If
End Sub