问题描述
我想复制一个富文本框的最后一行。
我避免使用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.