Создание переменной уровня класса типа Random:
Imports System.Linq
'//
Private ReadOnly rand As New Random
'//
Использование StringBuilder
с For..Loop
способом:
Dim sb As New StringBuilder
For Each line In TextBox1.Lines.
Where(Function(x) Not String.IsNullOrWhiteSpace(x)).
OrderBy(Function(x) rand.Next)
sb.AppendLine($"{line} Code-Done")
Next
TextBox2.Text = sb.ToString
Часть OrderBy(Function(x) rand.Next)
будет перетасовывать строки первого текстового поля и отобразите их во втором ..
В качестве альтернативы, вы можете использовать методы расширения для достижения этой цели в одной строке:
TextBox2.Lines = TextBox1.Lines.
Where(Function(x) Not String.IsNullOrWhiteSpace(x)).
OrderBy(Function(x) rand.Next).
Select(Function(x) $"{x} Code-Done").ToArray
Так что выберите подходящий способ для вас.
В соответствии с вашими правками, если вы хотите добавить выходных данных, замените StringBuilder
на переменную уровня класса типа List(Of String)
и отредактируйте код следующим образом:
Imports System.Linq
'//
Private ReadOnly rand As New Random
Private ReadOnly output As New List(Of String)
'//
For Each line In TextBox1.Lines.
Where(Function(x) Not String.IsNullOrWhiteSpace(x))
output.Add($"{line} Code-Done")
Next
TextBox2.Lines = output.OrderBy(Function(x) rand.Next).ToArray