Как я могу получить позицию вставки TextBox, когда есть выбор? - PullRequest
4 голосов
/ 11 сентября 2011

Если в TextBox нет выделения, тогда позиция вставки равна SelectionStart.

Но если равно a Selection, тогда позиция вставки может быть в SelectionStart (справа).выбор слева-направо):

enter image description here

Или это может быть в SelectionStart + SelectionLength (выбор слева направо):

enter image description here

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

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

Может быть способ трюк , но нет естественного способа сделать это.

Если, например, в данный момент в приложении вы знаете, что текст в TextBoxвыбран (без разницы влево-вправо или влево-вправо), вы можете сделать

textBox1.SelectionLength = 0; //this will clear a selection UI

После этой строки, позвонив по номеру

int caretPosition =  textBox1.SelectionStart;

, вы фактически получите позицию Caret,

Кстати, это хитрость, поэтому лучше избегать такого рода решений (может быть, кто-то предложит что-то другое), и лучше немного изменить код.

Надеюсьэто помогает.

0 голосов
/ 12 сентября 2011

Отличное объяснение позиции каретки, лучше всего вызывать нативный API таким образом, чтобы не прерывать выделение и другие функции текстового поля (например, отменить)

http://www.microbion.co.uk/developers/C%20position%20of%20caret.pdf

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