我正在使用VB WinForms应用程序。在名为list的列表框中包含以下项:
Ant
Cat
Ball
Dog
..
或
01
03
04
02
..
我想按字母顺序或以数字顺序转到下一个项目。例如,用户选择' Ball'然后按一个按钮,然后所选项目必须更改为“Cat'”。列表框不是数据绑定。
答案 0 :(得分:1)
您的问题需要解决两个问题:
String
/ Integer
),您需要能够找到下一个项目在这两种情况下。 例如
"11"
"01"
"02"
"22"
或者类似
之类的东西"11"
"1"
"111"
"2"
"22"
如果您将此列表排序为String
,您将获得 1,11,111,2,22 这是错误的,您需要将其排序为{{ 1}}获得 1,2,11,22,111
我的解决方案处理字符串和数值,并正确排序这种数字列表。
您可以在按钮Integer
事件
click
答案 1 :(得分:0)
你可以这样做
FindStringExact()
方法从ListBox中查找找到的项目的索引SelectedIndex
property。Dim items() As String = listBox1.Items.Cast(Of String)().OrderBy(Function(x) x).ToArray()
Dim iIndex As Integer = -1
If ListBox1.SelectedIndex <> -1 Then
iIndex = Array.IndexOf(items, ListBox1.SelectedItem.ToString())
End If
If iIndex >= (items.Length - 1) Then iIndex = -1
Dim strItem As String = items(iIndex + 1)
iIndex = ListBox1.FindStringExact(strItem, ListBox1.SelectedIndex)
If iIndex > -1 Then
ListBox1.SelectedIndex = iIndex
End If
在FindStringExact()
方法的第二个参数中我们已经分配了listBox1.SelectedIndex
coz,即使该项目是重复的,具有不同的索引,那么它应该在该项目之后进行检查。