2011-10-13 35 views
10

Quiero obtener la posición actual del cursor desde un WPF TextBox. Si TextBox contiene texto abhishek y el cursor parpadea después de abhi, entonces quiero ese índice, de modo que más tarde después de borrar el TextBox programáticamente y asignar otro texto o el mismo mediante programación, quiero que el cursor parpadee justo después de 4 caracteres.cómo obtener y establecer la posición actual del cursor del cuadro de texto WPF

He tratado posición del cursor pones así,

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

y retroceder en una etapa posterior de otro evento como este,

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

Aquí subrayan variables son variables de nivel de página.

Este código no funciona. ¿Hay algún otro enfoque?

Respuesta

4

Simplemente necesita agregar una línea para establecer el foco en el cuadro de texto, de lo contrario, todo está funcionando bien.

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

Se puede jugar con la propiedad caretIndex de un cuadro de texto

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

Esta respuesta coincide con la respuesta en el título OP, que es lo que estaba buscando. – Mishax

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

estas declaraciones son suficientes para hacer lo req. Estaba cometiendo un error al elegir el evento para escribir el código. Gracias a todos.

Cuestiones relacionadas