Как прокрутить RichTextBox до конца?

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

richTextBox.SelectionStart = richTextBox.Text.Length;

Это трюк:

richTextBox.ScrollToCaret();