Подтвердить что ты не робот

Как получить и установить текущую позицию курсора текстового поля WPF

Я хочу получить текущую позицию курсора из текстового поля WPF. Если a TextBox содержит текст abhishek, а курсор мигает после abhi, тогда я хочу этот индекс, так что позже после очистки TextBox программно и назначения какого-либо другого или того же текста программно я хочу, чтобы курсор мигал только после 4 символов.

Я попытался получить позицию курсора, подобную этой,

_tempFuncName = txtFunctionName.Text;
_cursorPosition =  txtFunctionName.SelectionStart;
_selectionLength = txtFunctionName.SelectionLength;

И вернемся на какой-то более поздний этап из другого события, подобного этому,

txtFunctionName.Text = _tempFuncName;
txtFunctionName.SelectionStart = _cursorPosition;
txtFunctionName.SelectionLength  = _selectionLength;

Здесь переменные подчеркивания являются переменными уровня страницы.

Этот код не работает. Есть ли другой подход?

4b9b3361

Ответ 1

Вы можете играть с свойством caretindex текстового поля

//You can set this property on some event
NumberOfDigits.CaretIndex = textbox.Text.Length;

Ответ 2

Вам просто нужно добавить одну строку, чтобы установить фокус на текстовое поле, иначе все будет работать нормально.

txtFunctionName.Text = _tempFuncName; 
txtFunctionName.SelectionStart = _cursorPosition; 
txtFunctionName.SelectionLength  = _selectionLength ; 
txtFunctionName.Focus();

Ответ 3

txtFunctionName.Text = _tempFuncName; 
txtFunctionName.SelectionStart = _cursorPosition; 
txtFunctionName.SelectionLength  = _selectionLength ; 

эти утверждения достаточны для выполнения требования req. я ошибался при выборе события для написания кода. Спасибо всем.

Ответ 4

Для меня это помогло не только установить фокус, но и прокрутить каретку.

'

        txt_logArea.Select(txt_logArea.Text.Length, 0);
        txt_logArea.ScrollToCaret();

'