Как прокрутить RichTextBox вниз? - PullRequest
71 голосов
/ 22 мая 2009

Мне нужно иметь возможность прокручивать RichTextBox вниз, даже когда я не добавляю текст. Я знаю, что могу добавить текст, а затем использовать его, чтобы установить начало выбора. Однако я хочу убедиться, что он находится внизу по визуальным причинам, поэтому я не добавляю текст.

Ответы [ 5 ]

102 голосов
/ 22 мая 2009

Вы можете попробовать установить в свойстве SelectionStart длину текста, а затем вызвать метод ScrollToCaret.

richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
16 голосов
/ 01 февраля 2014

RichTextBox будет прокручиваться до конца, если он имеет фокус, и вы используете AppendText для добавления информации. Если вы установите для HideSelection значение false, он сохранит свой выбор, когда потеряет фокус, и останется автоматически прокручиваемым.

Я разработал графический интерфейс Log Viewer, который использовал метод ниже. Это использовалось до полного поддержания ядра. Избавившись от этого кода и установив для HideSelection значение false, загрузка ЦП снизилась до 1-2%.

//Don't use this!
richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
14 голосов
/ 28 октября 2011

В WPF вы можете использовать ScrollToEnd:

richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
0 голосов
/ 26 января 2017

Код должен быть записан в событии TextChanged в поле расширенного текста, например:

private void richTextBox_TextChanged(object sender, EventArgs e) {
       richTextBox.SelectionStart = richTextBox.Text.Length;
       richTextBox.ScrollToCaret();
}
0 голосов
/ 07 июня 2013

Нет необходимости:

richTextBox.SelectionStart = richTextBox.Text.Length;

Это делает трюк:

richTextBox.ScrollToCaret();
...