#vb.net #richtextbox
#vb.net #richtextbox
Вопрос:
Я хочу скопировать последнюю строку расширенного текстового поля. Я избегаю Dim lastLine As String = RichTextBox1.Lines(RichTextBox1.Lines.Length - 1)
, поскольку он не работает должным образом, поскольку он работает, только если в нем есть по крайней мере 2 строки. Я пытаюсь, MsgBox(RichTextBox1.Lines(UBound(richtextbox1.Lines)))
но проблема в том, что даже если в richtextbox всего 1 строка текста, но курсор находится во второй пустой строке, он вернет «», поскольку я думаю, что программное обеспечение считывает пустую 2-ю строку. Есть решение для этого? Спасибо
Ответ №1:
Это приведет к получению последней непустой строки:
RichTextBox1.Lines.Where(Function(line) line <> String.Empty).Last()
С этим есть некоторые потенциальные проблемы. Если текста вообще нет или если есть несколько строк, но все они пустые, это вызовет исключение. Чтобы учесть это, вы можете вызвать LastOrDefault
вместо этого, и в этом случае он вернется Nothing
.
Если вы хотите исключить только последнюю пустую строку, например, если у вас есть текст, за которым следует разрыв строки, а затем еще один разрыв строки, тогда вы хотите получить первую из этих двух пустых строк, тогда вы не сможете сделать это в одной строке:
Dim lines = RichTextBox1.Lines
Dim upperBound = lines.GetUpperBound(0)
Dim lastLine = lines(upperBound)
If lastLine = String.Empty Then
If upperBound > 0 Then
lastLine = lines(upperBound - 1)
Else
lastLine = Nothing
End If
End If
'Use lastLine here.