也许有更好的解决方案,但是......
我使用listbox
选择多个项目,但该列表按字母顺序包含800多个项目。如果我选择三个项目,例如“苹果”,“橘子”和“西葫芦”,我必须向下拉scrollbar
或使用鼠标滚轮滚动列表。
有没有办法“跳转”到列表中的某个位置以减少所需的滚动?例如,如果我的“D”为button
,则滚动列表会跳转到以“D”开头的项目。
任何建议都将不胜感激。
答案 0 :(得分:0)
这应该可以根据需要使用。
第二行搜索列表框,找到以您按下的键开头的第一个项目。如果没有Items以该字母开头,则FindString函数返回-1或与ListBox.NoMatches相同(这是一个已在Visual Studio中定义的常量,以使代码更具可读性)
我已将代码放入一个单独的子代码中,以便可以将其重新应用于任何列表框。
Private Sub ListBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ListBox1.KeyDown
Dim key As String = Chr(e.KeyValue).ToString
SelectlistBoxItemFromKey(ListBox1, key)
End Sub
Private Sub SelectlistBoxItemFromKey(ByRef lBox As ListBox, k As String)
Dim index As Integer = lBox.FindString(k)
If index > ListBox.NoMatches Then
lBox.SelectedIndex = index - 1
End If
End Sub