Как отсортировать элементы lisbox по длине элемента vb.net - PullRequest
1 голос
/ 15 сентября 2011

если в vb.net есть какой-либо метод для сортировки списка по длине элемента, например, в списке есть свойство сортировать элементы по алфавиту

listbox1.sorted = true

, но как сортировать по длине элемента

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Вы можете попробовать:

listbox1.DataSource = listbox1.Items.Cast(Of Object).OrderByDescending(Function(x) x.ToString.Length).ToList
1 голос
/ 15 сентября 2011

Моя ошибка! Это для ListView, а не ListBox. Здесь - это пример (C #) для пользовательской сортировки списка.

Вы можете назначить класс IComparer для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...