0

学生の成績を登録する小さなプログラムがあります。マークはrichtextbox1この形式でに追加されます

ID         name         sname         DOB         average

テキストボックス1にデータが入力されたら、このデータを最高の平均成績で並べ替えて表示したいrichtextbox2

あるコントロールから別のコントロールにデータを渡すには、次のことができることを知っています

richtextbox2.text = rixhtextbox1.text

しかし、データをソートするのが難しいと感じています。どのアプローチを使用すればよいですか?

4

2 に答える 2

1

richtextbox1 のテキストを分割して解析するのではなく、richtextbox1 に入力するオブジェクトを並べ替えたほうがよいでしょう。

学生のリストがあるとしましょう

List<Student> studentList = new List<Student>();

そのリストは、次のようなものを使用してソートできます。

StringBuilder sb = new StringBuilder();
studentList.OrderByDescending(x=>x.Average)
    .ToList()
    .ForEach(x=> sb.Append(String.Format("{0} {1} {2} {3} {4}" + Environment.NewLine,x.Id,x.Name,x.Sname,x.DOB,x.Average)));

richTextBox2.Text = sb.ToString();
于 2013-03-20T18:16:38.617 に答える
0

そのデータを、listviewやdatagridviewなどのより適切なコントロールに配置します。列ヘッダーを非表示にし、行の境界線の色を変更(または完全に非表示)し、選択モードを変更することで、テキストボックスのように見せることができます。そうすれば、次のようなものを使用して組み込みの並べ替えを使用できます。

colAverage.SortMode = DataGridViewColumnSortMode.Descending;

または、リッチテキストボックスの使用に行き詰まっている場合は、そのテキストボックスからデータを取得し、並べ替え可能なコレクション(配列、リスト、辞書)に入れて並べ替えてから、 2番目のテキストボックスに入力します。

于 2013-03-20T18:47:03.967 に答える