我使用以下代码将项目添加到列表框:
Dim i As Integer = 0
Dim temp As String
ListBox2.Items.Clear()
While i <= 9
temp = Str(final_average(i)) + " " + Str(i + 1) + " " + Str(cals(i))
ListBox2.Items.Add(temp)
i = i + 1
End While
我想使用 average
或 final_average(i)
对此进行排序,但以下代码似乎不起作用:
Dim arr(ListBox2.Items.Count - 1) As Object
ListBox2.Items.CopyTo(arr, 0)
Array.Sort(arr)
ListBox2.Items.Clear()
ListBox2.Items.AddRange(arr)
如何对列表框的内容进行排序?
(注意:这不是家庭作业,而是更大项目的一部分)。
最佳答案
这是正确的方法。
A. 首先创建列表项类。
Public Class MyListItem
Implements IComparable(Of MyListItem)
Public FinalAverage As Integer
Public Number As Integer
Public Cals As Integer
Public Sub New(ByVal finalAverage As Integer, ByVal number As Integer, ByVal cals As Integer)
Me.FinalAverage = finalAverage
Me.Number = number
Me.Cals = cals
End Sub
Public Overrides Function ToString() As String
'' the way you want it to be shown in the listbox.
Return String.Format("{0} {1} {2}", FinalAverage, Number, Cals)
End Function
Public Function CompareTo(ByVal other As MyListItem) As Integer Implements System.IComparable(Of MyListItem).CompareTo
'' the way list items are compared for sorting... Return 0 for equal, -1 for smaller, +1 for bigger
If Me.FinalAverage < other.FinalAverage Then Return -1
If Me.FinalAverage > other.FinalAverage Then Return 1
Return 0
End Function
End Class
B. 现在使用此类将项目添加到列表框。
Dim listItems As New List(Of MyListItem)
For i As Integer = 0 To 9
listItems.Add(New MyListItem(final_average(i), i + 1, cals(i)))
Next
listItems.Sort()
ListBox2.DataSource = listItems
就是这样! :)
关于arrays - 对列表框的内容进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402880/