如何将RichTextBox滚动到底部?


72

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

Answers:


103

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

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

3
恐怕不是很可靠。您有时会滚动,以使插入符号的顶部像素可见。
gatopeich

1
我使用Visual Studio 2013和WPF,但对于RichTextBox不存在ScrollToCaret()方法,有什么想法吗?
Cyber​​guille

@gatopeich-在文本末尾添加换行符,您应该就能看到所有内容
Pat Mustard

17

RichTextBox将保持滚动到结束时,如果它具有焦点,并使用AppendText添加的信息。如果设置HideSelection为false,它将在失去焦点时保持其选择并保持自动滚动。

我设计了使用以下方法的Log Viewer GUI。它用尽了整个核心。除去此代码并将其设置HideSelection为false,可使CPU使用率降低到1-2%。

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

14

在WPF中,您可以使用ScrollToEnd:

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

问题是关于winforms的,滚动到结尾不存在
Riki

0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.