抱歉,这是几个月后的事了,但这是我的回答:不幸的是,我不认为你做错了什么。我认为这是微软在 RichTextBox 控件界面中做错的地方。我发现它只是笨重、尴尬和违反直觉。您的代码中发生的是 SelectionColor 属性设置当前选定文本的颜色。为什么它使第一个词着色而不是第二个词对我来说是个谜,因为我还没有尝试完全理解微软的古怪之处。但我了解它了解您需要使用什么代码:
rtb.SaveFile("test.txt")
For i As Int32 = 1 To 2
rtb.LoadFile("test.txt")
Dim oldBeg% = rtb.SelectionStart ' save original selection
Dim oldLen% = rtb.SelectionLength ' save original selection
Dim newBeg% = rtb.TextLength
rtb.AppendText("line " & vbCrLf)
Dim newLen% = rtb.TextLength - newBeg
' now color the newly added text ...
rtb.Select(newBeg, newLen) : rtb.SelectionColor = Color.Red
' now select the text that was (or was not) selected before text was appended
rtb.Select(oldBeg, oldLen)
rtb.SaveFile("test.txt")
Next i
一个小提示:我使用 Int32 而不是您使用的 Int16,因为不幸的是,Int16 在 .NET 中并不快,但确实更慢。并不是说像这个简单循环这样超快的东西真的需要任何速度改进,但是 .NET 中的 Int32 和 UInt32 是最小的 Int,当在这样的循环中使用时不会在内部转换为更大的 Int。