我需要能够将 RichTextBox 滚动到底部,即使我没有附加文本。我知道我可以附加文本,然后使用它来设置选择开始。但是,出于视觉原因,我想确保它位于底部,所以我没有添加任何文本。
问问题
80452 次
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 回答