Ввод текста из последней строки в richtextbox

#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.