RichTextBox C # Установить расположение каретки в winforms - PullRequest
2 голосов
/ 22 июня 2011

Я создаю приложение чата, в котором пользователь вводит свой текст в richtextbox.

В поле расширенного текста есть начальный текст, который говорит: «Я:».

Теперь, когда пользователь нажимает кнопку «Домой», я хочу, чтобы каретка находилась после строки «Я:».Так что для комбинации Shift + Home или для тройного щелчка мыши или для Ctrl + левый курсор и т. Д.

спасибо заранее, Оз.

Ответы [ 4 ]

7 голосов
/ 22 июня 2011

Вы можете установить позицию каретки с помощью свойств SelectionStart и SelectionLength поля расширенного текста. Установите SelectionLength в 0, а затем установите SelectionStart в том месте, где должна отображаться каретка.

Документация для SelectionStart гласит:

Если в элементе управления не выделен текст, это свойство указывает точку вставки или каретку для нового текста.


Функция Win32 API SetCaretPos слишком низкий уровень для ваших нужд.

4 голосов
/ 22 июня 2011

Используйте метод Выбор :

public void Select(
    int start,
    int length
)

richTextBoxUserText.Select(richTextBoxUserText.TextLength, 0);
4 голосов
/ 22 июня 2011

Winforms: RichTextBox.SelectionStart и установите RichTextBox.SelectionLength на 0.

WPF: RichTextBox.CaretPosition

0 голосов
/ 22 июня 2011

Нашел гуглить на свойстве SelectionProtected

richTextBoxUserText.Text = INITIAL_TEXT;
richTextBoxUserText.SelectAll();
richTextBoxUserText.SelectionColor = Color.Red;
richTextBoxUserText.SelectionProtected = true;
richTextBoxUserText.SelectionLength = 0;
richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1;
...