Textbox SelectionStart, SelectionEnd и Caret (Cursor) Position - PullRequest
3 голосов
/ 02 февраля 2012

Это может быть очень просто.

У меня есть текстовое поле для WinForm, Text = "ABCDEFGH".Мне нужно выбрать «BCD» и оставить I-Beam (курсор, курсор, мигающий «|») прямо между «A» и «B».Настройка SelectionStart = 1 и SelectionLenght = 3 не работает, и я не могу понять это.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Если для свойства TextBox.Multiline установлено значение True, вы можете сделать это, используя отрицательную длину выбора. Вам необходимо использовать перегрузку Select(), так как SelectionLength не допустит отрицательных значений.

textBox.Select(1 + 3, -3);
0 голосов
/ 02 февраля 2012

Вам необходимо установить SelectionLength в 0 как , отмеченное в документации .

Вы можете программно перемещать каретку в текстовом поле, установив SelectionStart нарасположите текстовое поле в том месте, куда вы хотите переместить каретку, и установите для свойства SelectionLength значение ноль (0).

Если проблема заключается в том, что BCD находится вфакт выбран, но вы хотите, чтобы курсор был перемещен назад до B . Я не верю, что вы сможете сделать это через свойства платформы, так как выделение текста переместит курсор в конец текста.Вам нужно будет использовать координаты и встроенное взаимодействие, как указано здесь .

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCaretPos(out Point lpPoint);

Затем вы можете вызвать SetCaretPos .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...