掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
データを保存して表示するには? (ID:108041)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
次に、配列の内容を並び替える方法に付いてです。 これには、System.Arrayクラスの Sort メソッドを使います。 例えば、以下のようになります。 '========================== 'これは、データの並び順を指定するための列挙値です。 Public Enum SortOrder NameAscending '名前順 ScoreAscending '点数の高い順 ScoreDescending '点数の低い順 End Enum 'これは、並び替えを行うためのクラスです。 Public Class ScoreInfoCollectionSorter Implements System.Collections.IComparer Private mSort As SortOrder Public Sub New(ByVal Sort As SortOrder) mSort = Sort End Sub 'IComparer.Compareを実装する事で、データの並び順を定義します。 '戻り値が <0 の時は、 x < y の意味 になります。 '戻り値が =0 の時は、 x = y の意味 になります。 '戻り値が >0 の時は、 x > y の意味 になります。 Public Overloads Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare Dim A, B As ScoreInfo A = DirectCast(x, ScoreInfo) B = DirectCast(y, ScoreInfo) Select Case mSort Case SortOrder.NameAscending Return String.Compare(A.Name, B.Name) Case SortOrder.ScoreAscending Return B.Score - A.Score Case SortOrder.ScoreDescending Return A.Score - B.Score Case Else Return 0 End Select End Function End Class '========================== 上記のようなクラスを定義しておいた上で、 System.Array.Sort(ScoreBoard, New ScoreInfoCollectionSorter(SortOrder.NameAscending)) とすれば、ScoreBoard の内容が、『名前順』に並び替えられます。 同様に、 System.Array.Sort(ScoreBoard, New ScoreInfoCollectionSorter(SortOrder.ScoreAscending)) とすれば、点数の高い順に並び替えられますし、 System.Array.Sort(ScoreBoard, New ScoreInfoCollectionSorter(SortOrder.ScoreDescending)) とすれば、点数の低い順に並び替えられます。 これ以外にも、ソート処理の方法は幾つかあります。 例えば、元データをDataTableクラスに保存するようにしておき、 それを、DataViewクラスのSortメソッドで並べ替えるという事もできます。 あるいは、Sayさんの回答のように、Sortedプロパティを指定した ListBoxを使って並び替える方法もありますね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.