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

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

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

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

спасибо

3 ответов


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

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

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


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

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

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