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

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

Ответов (4)

Решение

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

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

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

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

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