如何按项目长度vb.net对lisbox项目进行排序

时间:2011-09-15 17:28:35

标签: vb.net sorting listbox

如果vb.net中有任何方法按项目长度对列表框进行排序,例如 列表框中有一个属性可按字母顺序对项目进行排序

listbox1.sorted = true

但如何按项目长度排序

2 个答案:

答案 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