如何将 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 滚动到底部?的主要内容,如果未能解决你的问题,请参考以下文章