Позиция курсора Windows Forms RichTextBox

У меня есть программа С# Windows Forms с элементом управления RichTextBox. Всякий раз, когда текст внутри поля изменяется (кроме ввода этого изменения), курсор возвращается к началу.

Другими словами, когда текст в RichTextBox изменяется с помощью свойства Text, он возвращает курсор назад.

Как я могу держать курсор в том же положении или перемещать его вместе с отредактированным текстом?

Спасибо

Ответ 1

Вы можете сохранить позицию курсора перед внесением изменения, а затем восстановить его потом:

int i = richTextBox1.SelectionStart;
richTextBox1.Text += "foo";
richTextBox1.SelectionStart = i;

Вы также можете сделать то же самое с SelectionLength, если вы не хотите удалять выделение. Обратите внимание, что это может вызвать странное поведение, если вставленный текст находится внутри выделения. Затем вам нужно будет расширить выделение, чтобы включить длину вставленного текста.

Ответ 2

Будьте внимательны, если кто-то обновляет или полностью изменяет содержимое RichTextBox, метод фокуса должен быть предварительно выставлен для перемещения каретки:

richTextBox1.Focus();
int i = richTextBox1.SelectionStart;
richTextBox1.Text = strPreviousBuffer;
richTextBox1.SelectionStart = i;

Ответ 3

здесь меньше, что имеет тот же эффект. this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); Это отмечает 0 символов в конце текста и устанавливает курсор в конец