arrays - 对列表框的内容进行排序

标签 arrays vb.net listbox

我使用以下代码将项目添加到列表框:

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

我想使用 averagefinal_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/

相关文章:

python - 如何使用 numpy 对循环数组进行切片

vb.net - 语句在命名空间中无效

mysql - mysql DataReader 中的 asp.net 列表框第一项不可见

c - 指向数组类型混淆的指针

包含当月所有日期的 Php 数组

c - 用C的指针数组?

asp.net - 为什么我的函数在 UpdatePanel 加载后多次运行

vb.net - 如何在 .NET 4.0 中生成 List<T> 的元素组合

c# - ListBox SelectionChanged WP7 使用参数导航

wpf - 在代码隐藏中测试 ListBox 的滚动条可见性