C# 如何将RichTextBox滚动到底部?

C# 如何将RichTextBox滚动到底部?,c#,winforms,scroll,richtextbox,C#,Winforms,Scroll,Richtextbox,我需要能够滚动RichTextBox到底部,即使我没有追加文本。我知道我可以附加文本,然后用它来设置选择的开始。但是,出于视觉原因,我希望确保它位于底部,因此我不会添加任何文本。您可以尝试将SelectionStart属性设置为文本的长度,然后调用ScrollToCaret方法 richTextBox.SelectionStart = richTextBox.Text.Length; richTextBox.ScrollToCaret(); 在WPF中,您可以使用ScrollToEnd: ri

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

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

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

在WPF中,您可以使用ScrollToEnd:

richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
没有必要:

richTextBox.SelectionStart = richTextBox.Text.Length;
这就是诀窍:

richTextBox.ScrollToCaret();

如果
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();
}

恐怕不太可靠。有时会滚动,以便插入符号的顶部像素可见。我使用Visual Studio 2013和WPF,但RichTextBox不存在ScrollToCaret()方法,知道吗?@gatopeich-在文本末尾添加一个新行,您应该可以看到所有内容,但插入符号不在底部,这将如何滚动到底?问题是关于winforms,滚动到底不存在