Texto resaltado automático en un control de cuadro de texto

¿Cómo se resalta automáticamente el texto en un control de cuadro de texto cuando el control gana foco?

En Windows Forms y WPF:

textbox.SelectionStart = 0; textbox.SelectionLength = textbox.Text.Length; 

En asp.net:

 textBox.Attributes.Add("onfocus","this.select();"); 

Si desea hacerlo para toda su aplicación WPF, puede hacer lo siguiente: – En el archivo App.xaml.cs

  protected override void OnStartup(StartupEventArgs e) { //works for tab into textbox EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus)); //works for click textbox EventManager.RegisterClassHandler(typeof(Window), Window.GotMouseCaptureEvent, new RoutedEventHandler(Window_MouseCapture)); base.OnStartup(e); } private void TextBox_GotFocus(object sender, RoutedEventArgs e) { (sender as TextBox).SelectAll(); } private void Window_MouseCapture(object sender, RoutedEventArgs e) { var textBox = e.OriginalSource as TextBox; if (textBox != null) textBox.SelectAll(); } 

Si su intención es hacer resaltar el texto en el cuadro de texto haciendo clic con el mouse, puede simplificarlo agregando:

 this.textBox1.Click += new System.EventHandler(textBox1_Click); 

en:

 partial class Form1 { private void InitializeComponent() { } } 

donde textBox1 es el nombre del cuadro de texto relevante ubicado en Form1

Y luego crea la definición del método:

 void textBox1_Click(object sender, System.EventArgs e) { textBox1.SelectAll(); } 

en:

 public partial class Form1 : Form { } 

Creo que la manera más fácil es usar TextBox.SelectAll like en un evento Enter:

 private void TextBox_Enter(object sender, EventArgs e) { ((TextBox)sender).SelectAll(); } 

Aquí está el código que he estado usando. Requiere agregar la propiedad adjunta a cada cuadro de texto que desea seleccionar automáticamente. Al ver que no quiero que cada cuadro de texto en mi aplicación haga esto, esta fue la mejor solución para mí.

 public class AutoSelectAll { public static bool GetIsEnabled(DependencyObject obj) { return (bool)obj.GetValue(IsEnabledProperty); } public static void SetIsEnabled(DependencyObject obj, bool value) { obj.SetValue(IsEnabledProperty, value); } static void ue_Loaded(object sender, RoutedEventArgs e) { var ue = sender as FrameworkElement; if (ue == null) return; ue.GotFocus += ue_GotFocus; ue.GotMouseCapture += ue_GotMouseCapture; } private static void ue_Unloaded(object sender, RoutedEventArgs e) { var ue = sender as FrameworkElement; if (ue == null) return; //ue.Unloaded -= ue_Unloaded; ue.GotFocus -= ue_GotFocus; ue.GotMouseCapture -= ue_GotMouseCapture; } static void ue_GotFocus(object sender, RoutedEventArgs e) { if (sender is TextBox) { (sender as TextBox).SelectAll(); } e.Handled = true; } static void ue_GotMouseCapture(object sender, MouseEventArgs e) { if (sender is TextBox) { (sender as TextBox).SelectAll(); } e.Handled = true; } public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(AutoSelectAll), new UIPropertyMetadata(false, IsEnabledChanged)); static void IsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var ue = d as FrameworkElement; if (ue == null) return; if ((bool)e.NewValue) { ue.Unloaded += ue_Unloaded; ue.Loaded += ue_Loaded; } } } 

El principal cambio que hice aquí fue agregar un evento cargado a muchos de los ejemplos que he visto. Esto permite que el código continúe funcionando después de que se haya descargado (es decir, se haya cambiado una pestaña). También incluí el código para asegurarme de que el texto se selecciona si hace clic en el cuadro de texto con el mouse, y no solo el teclado lo enfoca. Nota: si realmente hace clic en el texto en el cuadro de texto, el cursor se inserta entre las letras como debería.

Puede usar esto incluyendo la siguiente etiqueta en su xaml.

  

Es muy fácil de lograr con el método SelectAll

Simplemente cou puede escribir esto:

 txtTextBox.Focus(); txtTextBox.SelectAll(); 

Y todo en textBox será seleccionado 🙂

Si necesita hacer esto para una gran cantidad de cuadros de texto (en Silverlight o WPF), puede usar la técnica utilizada en la publicación del blog: http://dnchannel.blogspot.com/2010/01/silverlight-3-auto -select-text-in.html . Utiliza propiedades adjuntas y eventos enrutados.

En eventos “Enter” (por ejemplo: presione la tecla Tab) o “First Click”, se seleccionará todo el texto. dotNET 4.0

 public static class TbHelper { // Method for use public static void SelectAllTextOnEnter(TextBox Tb) { Tb.Enter += new EventHandler(Tb_Enter); Tb.Click += new EventHandler(Tb_Click); } private static TextBox LastTb; private static void Tb_Enter(object sender, EventArgs e) { var Tb = (TextBox)sender; Tb.SelectAll(); LastTb = Tb; } private static void Tb_Click(object sender, EventArgs e) { var Tb = (TextBox)sender; if (LastTb == Tb) { Tb.SelectAll(); LastTb = null; } } } 

No sé por qué nadie mencionó eso, pero también puedes hacer esto, funciona para mí

 textbox.Select(0, textbox.Text.Length) 

Puedes usar esto, conciso. :RE

 TextBox1.Focus(); TextBox1.Select(0, TextBox1.Text.Length); 
  textBoxX1.Focus(); this.ActiveControl = textBoxX1; textBoxX1.SelectAll(); 

Si solo desea seleccionar todo el texto cuando el usuario hace clic por primera vez en el cuadro, y luego dejar que haga clic en el medio del texto, si lo desea, este es el código que terminé usando.

El solo hecho de manejar el evento FocusEnter no funciona, porque el evento Click viene después y anula la selección si selecciona SelectAll() en el evento Focus.

 private bool isFirstTimeEntering; private void textBox_Enter(object sender, EventArgs e) { isFirstTimeEntering = true; } private void textBox_Click(object sender, EventArgs e) { switch (isFirstTimeEntering) { case true: isFirstTimeEntering = false; break; case false: return; } textBox.SelectAll(); textBox.SelectionStart = 0; textBox.SelectionLength = textBox.Text.Length; } 

En forma de ventana c #. Si usa el evento Enter, no funcionará. intenta usar el evento MouseUp

  bool FlagEntered; private void textBox1_MouseUp(object sender, MouseEventArgs e) { if ((sender as TextBox).SelectedText == "" && !FlagEntered) { (sender as TextBox).SelectAll(); FlagEntered = true; } } private void textBox1_Leave(object sender, EventArgs e) { FlagEntered = false; } 
 textbox.Focus(); textbox.SelectionStart = 0; textbox.SelectionLength = textbox.Text.Length;