带有 RichTextBox 的 Visual Basic 自动滚动

Visual Basic Auto Scroll with RichTextBox

我希望我的 Richtextbox 始终位于底部,"autoscroll" 位于末尾。 我通过一些 google 搜索发现了这个:

     Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
        RichTextBox1.SelectionStart = RichTextBox1.TextLength
        RichTextBox1.ScrollToCaret()

     End Sub

这似乎可行,但随着文本更新,它会跳到框的顶部,并在底部进行另一次更新。有人可以帮我吗?或者有没有更好的方法将文本框保留在最后?

谢谢, 最大值

您的代码可以正常工作 - 我建议您稍微更改代码并添加

来解决您最初的问题
RichTextBox1.SuspendLayout()

在你的子的开头,并且

RichTextBox1.ResumeLayout()

最后。

但是,如果您的光标不在最后一行并且您键入了一些内容,则该字符会在移动到文本末尾之前出现在光标处。我猜你不想要这种行为 - 在这种情况下你应该将代码添加到 KeyPress 事件中。

有几种可能的行为。您希望能够在任何地方打字,还是只能在文本末尾打字?或者只是在某些情况下将光标放在末尾 - 例如当 RichTextBox 首次填充一堆文本时?或者其他东西。

最简单的解决方案是用户只需按下 Ctrl-End 键即可。那根本不需要任何代码。