Textbox SelectionStart, SelectionEnd и Caret (Cursor) Position
Это может быть очень просто.
У меня есть текстовое поле на WinForm, Text = "ABCDEFGH". Мне нужно выбрать "BCD" и оставить I-Beam (курсор, курсор, мигающий "|") прямо между "A" и "B". Установка SelectionStart = 1 и SelectionLenght = 3 не работает, и я не могу понять это.
1 ответ
Вам нужно установить SelectionLength
до 0, как указано в документации.
Вы можете программно переместить курсор в текстовом поле, установив SelectionStart в положение в текстовом поле, куда вы хотите переместить курсор, и установите для свойства SelectionLength значение ноль (0).
Если проблема в том, что BCD фактически выбран, но вы хотите, чтобы курсор был перемещен назад до B, я не верю, что вы сможете сделать это через свойства платформы, так как выбор текста переместит курсор в конец текста., Вы должны будете использовать координаты и встроенное взаимодействие, как отмечено здесь.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCaretPos(out Point lpPoint);
Затем вы можете вызвать SetCaretPos.
Если вы установите TextBox.Multiline
Свойство True, затем вы можете сделать это, используя отрицательную длину выбора. Вам нужно использовать Select()
перегрузка как SelectionLength
не допустит отрицательных значений.
textBox.Select(1 + 3, -3);