2

配列リストをオブジェクト名でソートしようとしています

Dim ObjList as new arraylist
Dim TextBox1 as new textbox
Textbox1.name = "CCC"
Dim TextBox2 as new textbox
Textbox1.name = "AAA"
Dim TextBox3 as new textbox
Textbox1.name = "BBB"
ObjList.add(TextBox1)
ObjList.add(TextBox2)
ObjList.add(TextBox3)
ObjList.sort()

ソートによりエラーが発生します。AAA BBB CCC のように TextBox を名前で並べ替えるにはどうすればよいですか

ありがとうございました

4

1 に答える 1

7

を作成してメソッドIComparerに渡す必要があります。Sort

Class TextBoxComparer 
    Implements IComparer

    Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
        Return String.Compare(x.Name, y.Name)
    End Function

End Class

...

ObjList.Sort(New TextBoxComparer())

または、に切り替えることができる場合は、( Comparison(Of T)List(Of TextBox)デリゲートに一致する) 匿名関数も実行します。

Dim ObjList As New List(Of TextBox)

...

ObjList.Sort(Function(x, y) String.Compare(x.Name, y.Name))
于 2012-11-28T15:05:45.887 に答える