Предотвратить прокрутку текстового поля при добавлении текста

Я добавляю новую строку журнала в объект TextBox WinForms, и это заставляет текстовое поле прокручиваться вниз. Как я могу предотвратить это и сохранить свою текущую позицию? (краткий фрагмент кода поможет)


person ripper234    schedule 26.02.2009    source источник


Ответы (4)


На самом деле, AppendText() не будет делать то, что вы хотите (попробуйте добавить больше текста, и в какой-то момент все пойдет наперекосяк)

На самом деле ответ лежит в Win32 API, и, к счастью для нас, другой пользователь SO уже отлично реализовал это поведение: Автоматическая прокрутка текстового поля использует больше памяти, чем ожидалось

person Ohad Schneider    schedule 28.02.2010

В С# вы можете попробовать <yourTextBox>.Text += "your new text"; вместо <yourTextBox>.AppendText("your new text");.

person Horst    schedule 19.12.2012

Правильный и простой ответ на заданный вопрос — свойство SelectedText (чтение/запись). Вы можете назначить ему некоторый текст, и этот текст появится в позиции курсора без необходимости прокрутки текстового поля. Вы можете использовать SelectionStart перед этим, чтобы переместить каретку в нужное место.

person dotNET    schedule 06.06.2013

По какой-то причине SelectionStart не сделал то, что я хочу. Он был сброшен на 0. Я нашел этот пост, который отвечает то, что я хотел (чтобы использовать текстовое поле в качестве журнала). Ответ: TextBox.AppendText()

person ripper234    schedule 26.02.2009
comment
Ссылка выглядит плохой. - person Jesse Craig; 13.05.2020