Мне нужно прокрутить 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 ). Это может оказаться существенным для вас, если вам нужна автопрокрутка даже если пользователь не видит текстбокс.
Один из методов обойти эту проблему — прокрутить скроллбар «вручную» на изменении видимости: