带有 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 键即可。那根本不需要任何代码。
我希望我的 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 键即可。那根本不需要任何代码。