排序列表(MaskedTextBox)

时间:2013-08-23 15:41:38

标签: vb.net maskedtextbox

列表 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

1 个答案:

答案 0 :(得分:2)

使用LINQ,您可以这样做:

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

或者,如果您不能使用LINQ或不想使用LINQ,请执行以下操作:

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

注意:如果您想按MaskedTextBox的其他属性进行排序,只需将Text更改为属性名称,例如Name