Положение курсора RichTextBox в Windows Forms - PullRequest
10 голосов
/ 11 февраля 2010

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

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

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

Спасибо

Ответы [ 3 ]

13 голосов
/ 11 февраля 2010

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

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

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

3 голосов
/ 23 июня 2011

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

richTextBox1.Focus();
int i = richTextBox1.SelectionStart;
richTextBox1.Text = strPreviousBuffer;
richTextBox1.SelectionStart = i;
0 голосов
/ 17 мая 2016

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

...