Я добавляю новую строку журнала в объект TextBox WinForms, и это заставляет текстовое поле прокручиваться вниз. Как я могу предотвратить это и сохранить свою текущую позицию? (краткий фрагмент кода поможет)
Предотвратить прокрутку текстового поля при добавлении текста
Ответы (4)
На самом деле, AppendText() не будет делать то, что вы хотите (попробуйте добавить больше текста, и в какой-то момент все пойдет наперекосяк)
На самом деле ответ лежит в Win32 API, и, к счастью для нас, другой пользователь SO уже отлично реализовал это поведение: Автоматическая прокрутка текстового поля использует больше памяти, чем ожидалось
В С# вы можете попробовать <yourTextBox>.Text += "your new text";
вместо <yourTextBox>.AppendText("your new text");
.
Правильный и простой ответ на заданный вопрос — свойство SelectedText
(чтение/запись). Вы можете назначить ему некоторый текст, и этот текст появится в позиции курсора без необходимости прокрутки текстового поля. Вы можете использовать SelectionStart
перед этим, чтобы переместить каретку в нужное место.
По какой-то причине SelectionStart не сделал то, что я хочу. Он был сброшен на 0. Я нашел этот пост, который отвечает то, что я хотел (чтобы использовать текстовое поле в качестве журнала). Ответ: TextBox.AppendText()