72

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

4

5 回答 5

106

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

richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
于 2009-05-21T22:16:35.357 回答
17

如果它有焦点并且你用来添加信息,RichTextBox它将保持滚动到最后。AppendText如果您设置HideSelection为 false,它将在失去焦点时保持其选择并保持自动滚动。

我设计了一个使用以下方法的日志查看器 GUI。它使用了一个完整的核心来跟上。摆脱此代码并将其设置HideSelection为 false 可使 CPU 使用率降至 1-2%。

//Don't use this!
richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
于 2014-01-31T21:36:21.720 回答
14

在 WPF 中,您可以使用 ScrollToEnd:

richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
于 2011-10-28T17:43:05.653 回答
0

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

private void richTextBox_TextChanged(object sender, EventArgs e) {
       richTextBox.SelectionStart = richTextBox.Text.Length;
       richTextBox.ScrollToCaret();
}
于 2017-01-26T14:54:39.243 回答
-1

不需要:

richTextBox.SelectionStart = richTextBox.Text.Length;

这可以解决问题:

richTextBox.ScrollToCaret();
于 2013-06-07T06:29:01.400 回答