我需要能够滚动 RichTextBox 到底部,即使我没有追加文本。我知道我可以附加文本,然后使用它来设置选择开始。然而,出于视觉上的原因,我想确保它在底部,所以我不会添加任何文本。
您可以尝试将 SelectionStart 属性设置为文本的长度,然后调用 ScrollToCaret 方法。
richTextBox.SelectionStart = richTextBox.Text.Length; richTextBox.ScrollToCaret();
在 WPF 中可以使用 ScrollToEnd:
richTextBox.AppendText(text); richTextBox.ScrollToEnd();
如果 RichTextBox有焦点,并且您使用 AppendText来添加信息,那么它将滚动到末尾。如果你将 HideSelection设置为 false,它会在失去焦点时保持自动滚动。
RichTextBox
AppendText
HideSelection
我使用下面的方法设计了一个日志查看器 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(); }