2

リストPrivate msklistclass1 As New List(Of MaskedTextBox)には、次のコードを実行した後、次の MaskedTextBox コントロールが含まれます

 For Each ctrl As Control In Me.pnlclass11.Controls
    If TypeOf ctrl Is MaskedTextBox Then
      msklistclass1.Add(ctrl)
    End If
 Next

seat112
seat212
seat312
seat412
seat512
seat612
seat122
seat222
seat322
seat422
seat522
seat622

しかし、それらは上に示した順序ではないと思います。これらのコントロールに順番に値を割り当てようとすると、順番に割り当てられません。

次のコードを試しました

For i = 0 To 11 Step 1
     msklistclass1(i).Text = rno312(i)
Next

私が期待する課題は

seat112  1138M0321
seat212  1138M0322
seat312  1138M0323
seat412  1138M0324
seat512  1138M0325
seat612  1138M0326

しかし、それらはこの順序で割り当てられていません リストをソートする可能性はありますかmsklistclass1


この行は私に次の出力を与えます msklistclass1.Sort(Function(x, y) x.Name.CompareTo(y.Name))

seat111  1138M0321  seat121  1138M0321
seat211  1138M0323  seat221  1138M0324
seat311  1138M0325  seat321  1138M0326
seat411  1138M0326  seat421  1138M0327
seat511  1138M0328  seat521  1138M0329
seat611  1138M0330  seat621  1138M0331

でも私はしたい

seat111  1138M0321  seat121  1138M0327
seat211  1138M0322  seat221  1138M0328
seat311  1138M0323  seat321  1138M0329
seat411  1138M0324  seat421  1138M0330
seat511  1138M0325  seat521  1138M0331
seat611  1138M0326  seat621  1138M0332
4

1 に答える 1

2

LINQ を使用すると、次のことができます。

Dim listOrdered = From m In msklistclass1 Order By m.Text

または、LINQ を使用できない場合、または使用したくない場合は、次のようにします。

msklistclass1.Sort(Function(x, y) x.Name.CompareTo(y.Text))

注: の別のプロパティで並べ替えたい場合は、たとえば、プロパティ名をMaskedTextBox変更するだけです。TextName

于 2013-08-23T16:05:03.320 に答える