如何将 RichTextBox 滚动到底部?

我需要能够滚动 RichTextBox 到底部,即使我没有追加文本。我知道我可以附加文本,然后使用它来设置选择开始。然而,出于视觉上的原因,我想确保它在底部,所以我不会添加任何文本。

81411 次浏览

您可以尝试将 SelectionStart 属性设置为文本的长度,然后调用 ScrollToCaret 方法。

richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();

在 WPF 中可以使用 ScrollToEnd:

richTextBox.AppendText(text);
richTextBox.ScrollToEnd();

如果 RichTextBox有焦点,并且您使用 AppendText来添加信息,那么它将滚动到末尾。如果你将 HideSelection设置为 false,它会在失去焦点时保持自动滚动。

我使用下面的方法设计了一个日志查看器 GUI。它过去一直保持一个完整的核心。去掉这段代码并将 HideSelection设置为 false 可以使 CPU 使用率降低到1-2% 。

//Don't use this!
richTextBox.AppendText(text);
richTextBox.ScrollToEnd();

代码应该写在富文本框的 TextChanged 事件中,如:

private void richTextBox_TextChanged(object sender, EventArgs e) {
richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
}