替换行时,RichTextBox会自动滚动到底部

时间:2016-10-24 22:33:13

标签: vb.net winforms richtextbox

我使用richtexbox为我的应用程序添加日志。我也将它用作后台工作者的某种进度条。

我不打算详细介绍,但是应用程序循环遍历多个设备并收集数据,正在处理的当前数据显示在richtextbox的最后一行,并在每次处理新文件时被替换

这是一个小样本的日志。

Found 239 record(s), Transferred 239 record(s) from: 10.10.10.10 - 10/24/2016 7:37:45 PM
Found 42 record(s), Transferred 42 record(s) from: 10.10.10.11 - 10/24/2016 7:37:58 PM
43593...

处理时,最后一行将被其他一些数据替换。直到它完成并再次替换。

Found 239 record(s), Transferred 239 record(s) from: 10.10.10.10 - 10/24/2016 7:37:45 PM
Found 42 record(s), Transferred 42 record(s) from: 10.10.10.11 - 10/24/2016 7:37:58 PM
Found 2 record(s), Transferred 2 record(s) from: 10.10.10.12 - 10/24/2016 7:38:03 PM
986035...

我使用AppendText将数据添加到richtextbox,这样可以正常工作,并在添加新记录时将richtextbox滚动到底部。但是对于我的"进度条"我替换了最后一行:

Me.rtbLogs.Rtf = Me.rtbLogs.Rtf.Replace(Me.rtbLogs.Lines(rtbLogs.Lines.Length - 1), e.UserState.ToString())

一切正常,除非它替换文本,richtextbox会滚动回到顶部。

1 个答案:

答案 0 :(得分:1)

您需要滚动到文本的末尾。试试这个:

  ' Append the new text and a new line
 RichTextbox1.AppendText("New Text" & vbNewLine)
  ' Sets the starting point of the selection         
RichTextbox1.SelectionStart = Len(RichTextbox1.Text)
  ' Scrolls to the caret
RichTextbox1.ScrollToCaret()
  ' Select the range 
RichTextbox1.Select()