Это может быть достигнуто сравнительно легко с помощью LINQ, который обеспечивает OrderBy метод сортировки, а также способ Zip для выравнивания Как и с Bs.
Предполагая TextBox массивов inputAs, inputBs, outputAs и outputBs:
Private Sub Sort_Click(sender As Object, e As EventArgs) Handles Sort.Click
' Zip A and B inputs and extract values
Dim inputs =
inputAs.Zip(inputBs,
Function(a, b) New With {.A = CInt(a.Text), .B = CInt(b.Text)})
' Sort values by B
Dim values = inputs.OrderBy(Function(item) item.B).ToArray()
' Set outputs with sorted input values
For i = 0 To values.Length - 1
outputAs(i).Text = values(i).A.ToString()
outputBs(i).Text = values(i).B.ToString()
Next
End Sub
Для сортировки с ярлыками тоже значения B может быть отсортированы вместе с соответствующими порядковыми, а затем порядковым используется для копирования из вход управления для управления выходными:
Private Sub Sort_Click(sender As Object, e As EventArgs) _
Handles Sort.Click
' Map Bs to collection of ordinals and values
' Then order by values
Dim items =
InputBs _
.Select(Function(control, i) _
New With _
{.Ordinal = i,
.Value = CInt(control.Text)}) _
.OrderBy(Function(item) item.Value) _
.ToArray()
' Set outputs with sorted input values
For i = 0 To items.Length - 1
Dim j = items(i).Ordinal
OutputAs(j).Text = InputAs(i).Text
OutputBs(j).Text = InputBs(i).Text
OutputLabels(j).Text = InputLabels(i).Text
Next
End Sub
возможно ** ** точный дубликат: http://stackoverflow.com/questions/22317571/how-to-sort-values-of-textboxes-in-vb – har07
Дон Не ставьте один и тот же вопрос несколько раз. – Jens
Извините. Кстати, мы - одноклассники, другой пользователь, который задал один и тот же вопрос. Здесь я включил фотографии. Это то, что мы хотим. – SmashedPotato