Первое, изменить шрифт на fixed-width шрифта. Я выбрал Courier New.
Теперь для этого вам нужно знать, какая максимальная длина ваших номеров. В вашем примере это , длина которого .
Для достижения этой цели, что я сделал добавить цифры к Dictionary:
Dim numbers As New Dictionary(Of String, Integer)
numbers.Add("str1: ", 3000)
numbers.Add("str22: ", 23044)
numbers.Add("str333: ", 222222)
Я тогда нашел максимальную длину .Values
коллекции для работы, какой номер имел наибольшую длину, обивку из номера с использованием maxLength
:
Dim maxLength As Integer = numbers.Values.Max.ToString.Length
следующая задача заключалась в петле через Dictionary
и добавить значения в StringBuilder:
'Import System.Text
Dim sb As New StringBuilder
For Each number As KeyValuePair(Of String, Integer) In numbers
sb.AppendLine(String.Format("{0,15}", number.Key) & String.Format("{0:d6}", number.Value.ToString.PadLeft(maxLength)))
Next
Чтобы использовать StringBuilder
вам придется импортировать System.Text
.
Наконец:
txtKopfring.Text = sb.ToString()
Это дает мне следующий вывод:
Если вы не хотите следовать моей логике, чтобы добиться того, что вы после в вашем код, вы можете изменить:
String.Format(" {0:d6}", n1)
To:
String.Format("{0:d6}", n1.ToString.PadLeft(6))
Обратите внимание на 6 является жёстко и не рекомендуется, как и другие ценности могут вступить в игру, которая может быть больше в длину и выбросит форматирование из.
Также я скопировал ваш код непосредственно из вашего вопроса и заметил небольшую проблему.
Это String.Format(" {0:d6}", n1)
имеет место в первом аргументе, и это будет передано в вашем форматировании. Удалите пространство, подобное String.Format("{0:d6}", n1)
.
Нужно ли выровнять только n1? – nbadaud
Вывод, который мне нужен, записывается с самого начала, мне нужно, чтобы str1, str22, str333 были выровнены вправо, а также номера, которые должны быть выровнены вправо –
Вы должны использовать текстовое поле? – nbadaud