如何将 RichTextBox 滚动到底部?

Posted

技术标签:

【中文标题】如何将 RichTextBox 滚动到底部?【英文标题】:How do I scroll a RichTextBox to the bottom? 【发布时间】:2010-10-28 02:01:45 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

不需要:

richTextBox.SelectionStart = richTextBox.Text.Length;

这就是诀窍:

richTextBox.ScrollToCaret();

【讨论】:

但是插入符号不在底部,这个怎么滚动到底部呢?【参考方案4】:

在 WPF 中你可以使用 ScrollToEnd:

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

【讨论】:

问题是关于winforms,滚动到末尾不存在【参考方案5】:

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

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

【讨论】:

恐怕不太可靠。您有时会被滚动以使插入符号的顶部像素可见。 我使用 Visual Studio 2013 和 WPF,但 RichTextBox 不存在 ScrollToCaret() 方法,有什么想法吗? @gatopeich - 在文本末尾添加换行符,您应该可以看到所有内容

以上是关于如何将 RichTextBox 滚动到底部?的主要内容,如果未能解决你的问题,请参考以下文章

Flex:如何将页面滚动到底部?

如何以编程方式将 ScrollView 滚动到底部

如何以编程方式将 CollectionView 滚动到底部

如何将asp.net文本框滚动到底部

如何在实时数据输入期间将 QTableWidget 设置为始终滚动到底部

如果用户将窗口滚动到底部[重复]