c# wpf textbox caret selectall

c# - WPF TextBox selecciona y muestra atención al mismo tiempo



caret selectall (2)

El problema es la fuerte conexión interna en el TextBox entre CaretIndex y la Selection .

Cada vez que modifique la selección con Select() o Select() SelectAll() , TextBox coloca automáticamente CaretIndex al comienzo de la selección. A la inversa, TextBox borra la selección cuando modifica manualmente CaretIndex . Puede hacer que este comportamiento sea visible si se registra en SelectionChanged en el TextBox y CaretIndex el CaretIndex actual en Console .

Esto es por una buena razón, como Okuma.Scott ya mencionó en su comentario.

Entonces, si su comportamiento deseado es realmente necesario, probablemente necesite implementar su propio CustomTextBox.

después de una larga búsqueda en la red, espero que puedan ayudarme.

Mi problema: quiero seleccionar el texto completo en un cuadro de texto y mostraré el cursor (cursor parpadeante) después del último carácter.

Siempre he encontrado información sobre un problema o información para ocultar el símbolo.

Las cosas separadas no son un problema, pero la combinación de eso no funciona.

// Set the focus to the TextBox myTextBox.Focus(); // Select the complete text, but hide the caret (blinking cursor) myTextBox.SelectAll(); // or // myTextBox.Select(0, myTextBox.Text.Length); // Set the caret after the last character, but loss the selection from the text myTextBox.CaretIndex = myTextBox.Text.Length;

Entonces, veo el símbolo de intercalación después del último carácter, pero el texto no está seleccionado

myTextBox.Focus(); myTextBox.SelectAll(); myTextBox.CaretIndex = myTextBox.Text.Length;

Y entonces, el texto está seleccionado, pero no se muestra ningún símbolo de intercalación.

myTextBox.Focus(); myTextBox.CaretIndex = myTextBox.Text.Length; myTextBox.SelectAll();

Y ese es el problema: uno de ellos desactiva el otro, pero necesito estas dos cosas al mismo tiempo

Estoy usando WPF y .Net 4.0

Gracias por ayudar :-)


Esto funcionó para mí:

TextBox.Text = _Text; System.Windows.Input.Keyboard.Focus(TextBox); TextBox.GotFocus += (sender, e) => { if (_selectAll) { //I think Caret can be set here but I didn''t try it TextBox.SelectAll(); } };