c richtextbox прокрутка к последней строке

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

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

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

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

В этой маленькой заметке я покажу как в WinForms реализовать автопрокрутку в конец текста элемента TextBox . Пригодиться это может, например, при перенаправлении вывода консоли в TextBox.

Допустим, у нас есть контрол TextBox с именем txtConsole . Мы хотим что бы при любом обновлении текста в этом текст боксе, выполнялась его автоматическая прокрутка вниз, как в консоли.

Сделать это очень просто. Для этого добавим следующий обработчик события TextChanged :

Как прокручивать textbox вниз по мере появления в нем текста?

2 ответа 2

Если вы используете TextBox.AppendText(string text) , текстбокс будет автоматически прокручиваться к концу добавленного текста. При этом не будет мигания скроллбара, если вы пользуетесь функцией в цикле..

Кроме того, такой подход получается на порядок производительнее, чем конкатенация в свойство .Text . Хотя это может зависеть от того, с какой частотой вы вызываете функцию; я тестировал на добавлении данных в цикле без пауз.

При этом подходе текст не прокрутится, если добавление происходит до того, как текстбокс был показан в UI, или если текстбокс не был видим по какой-либо другой причине (например, он был в другом табе в TabPanel ). Это может оказаться существенным для вас, если вам нужна автопрокрутка даже если пользователь не видит текстбокс.

Один из методов обойти эту проблему — прокрутить скроллбар «вручную» на изменении видимости:

Оцените статью