2009-05-21 48 views
68

我需要能夠將RichTextBox滾動到底部,即使我沒有附加文本。我知道我可以附加文字,然後用它來設置選擇開始。不過,我想確保它在底部出於視覺原因,所以我不添加任何文本。如何滾動RichTextBox到底部?

回答

100

您可以嘗試將SelectionStart屬性設置爲文本的長度,然後調用ScrollToCaret方法。

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

不是很可靠,我很害怕。您有時會滾動,因此插入符的頂部像素可見。 – gatopeich 2013-03-11 18:05:39

+1

我使用Visual Studio 2013和WPF,但ScrollToCaret()方法對於RichTextBox,任何想法都不存在? – Cyberguille 2015-07-28 20:59:37

+0

@gatopeich - 在文本的末尾添加一個換行符,您應該能夠看到所有內容 – 2015-11-11 06:06:42

14

在WPF中,你可以使用ScrollToEnd:

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

以編程方式添加文本時不起作用 – 2013-03-16 07:54:07

-1

沒有必要:

richTextBox.SelectionStart = richTextBox.Text.Length; 

該做的伎倆:

richTextBox.ScrollToCaret(); 
16

RichTextBox將保持如果已經滾動到最後重點和您使用AppendText添加信息。如果您將HideSelection設置爲false,它將在失去焦點並保持自動滾動時保持其選擇狀態。

我設計了一個使用下面方法的Log Viewer GUI。它用完了一個完整的核心。擺脫此代碼並將HideSelection設置爲false會將CPU使用率降低至1-2%。

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

代碼應該寫在富文本框的TextChanged事件,如:

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