如果vb.net中有任何方法按项目长度对列表框进行排序,例如 列表框中有一个属性可按字母顺序对项目进行排序
listbox1.sorted = true
但如何按项目长度排序
答案 0 :(得分:3)
您可以尝试:
listbox1.DataSource = listbox1.Items.Cast(Of Object).OrderByDescending(Function(x) x.ToString.Length).ToList
答案 1 :(得分:1)
我的错!这适用于ListView而不是ListBox。 Here是列表框自定义排序的示例(C#)。
您可以将IComparer类分配给listview的ListViewItemSorter,以根据长度比较项目。这有点麻烦,但它可以让您完全控制排序顺序。
这是一个例子(未经过测试.uColumn是排序列):
ListView1.ListViewItemSorter = New lvSort
...
Class lvSort
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
Implements IComparer.Compare
s1 = CType(x, ListViewItem).SubItems(uColumn).Text
s2 = CType(y, ListViewItem).SubItems(uColumn).Text
If s1.Length < s2.Length Then
Return (-1)
ElseIf s1.Length > s2.Length Then
Return (1)
Else
Return (0)
End If
End Function
End Class