Richtextbox中来自最后行的Gettint文本

问题描述

我想复制一个富文本框的最后一行。 我避免使用Dim lastLine As String = RichTextBox1.Lines(RichTextBox1.Lines.Length - 1) 它无法正常工作,因为即使其中至少有两行它也可以正常工作。 我正在尝试使用MsgBox(RichTextBox1.Lines(UBound(richtextBox1.Lines))),但是问题是,即使richtextBox仅包含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.