ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

Visual Basic 中学校 > VB.NET サンプル > Windows.Forms.ListBox >

項目を並び替える

1.昇順に並び替える例

以下の例では項目が辞書順に並び変わる。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Items() As String = {"カイロ", "モスクワ", "パリ", "ニューヨーク"}

ListBox1.Items.AddRange(Items)

ListBox1.Sorted = True

メモ:この方法で数字を並び替えると、100は9より小さいとみなされます。辞書は先頭の文字で順番を比較するからです。数値順に並び替えるには3.数値順に並び替える例をご覧下さい。

 

2.逆順に並び替える例

以下の例では項目を逆に並び替える。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim Items() As String = {"カイロ", "モスクワ", "パリ", "ニューヨーク"}

ListBox1.Items.AddRange(Items)

ArrayList.Adapter(ListBox1.Items).Reverse()

 

3.数値順に並び替える例

以下の例では項目が数値順に並び変わる。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim Items() As String = {"100", "9", "25", "12"}

    ListBox1.Items.AddRange(Items)

    ArrayList.Adapter(ListBox1.Items).Sort(New IntegerSorter)

End Sub

Public Class IntegerSorter
   
Implements IComparer

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

        Return CInt(x).CompareTo(CInt(y))

    End Function

End Class

メモ:この例ではIntegerに変換可能な数値のみを扱っています。

 

4.項目を任意の順番に並び替える例

以下の例では惑星の名前を太陽に近い順に並び替える。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim Items() As String = {"地球", "火星", "水星", "木星", "金星"}

    ListBox1.Items.AddRange(Items)

    ArrayList.Adapter(ListBox1.Items).Sort(New PlanetSorter)

End Sub

Public Class PlanetSorter
   
Implements IComparer

    Private ArCustom() As String = {"水星", "金星", "地球", "火星", "木星"}

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

        Dim XIndex As Integer = Array.IndexOf(ArCustom, CStr(x))
        Dim YIndex As Integer = Array.IndexOf(ArCustom, CStr(y))

        Return Comparer.Default.Compare(XIndex, YIndex)

    End Function

End Class