Tengo un control TextBox estándar que trato de imitar a las "descripciones suaves" como las que se encuentran en los cuadros de título y etiquetas en StackOverflow. Esencialmente, cuando el enfoque del usuario ingresa al control, oculta la descripción ("Nombre de usuario") en este caso, y establece que la alineación y el color sean los de un control de texto estándar. Cuando el usuario abandona el cuadro de texto, quiero verificar si el usuario realmente ingresó algo, y poner de otra manera el nombre de usuario en la pantalla de respaldo.Al modificar un control TextBox en el evento Leave se excluye el control
Por ejemplo:
private void tbUsername_Enter(object sender, EventArgs e)
{
if (tbUsername.TextAlign == HorizontalAlignment.Center)
{
tbUsername.TextAlign = HorizontalAlignment.Left;
tbUsername.ForeColor = SystemColors.ControlText;
tbUsername.Text = String.Empty;
}
}
private void tbUsername_Leave(object sender, EventArgs e)
{
if (tbUsername.Text == String.Empty)
{
tbUsername.TextAlign = HorizontalAlignment.Center;
tbUsername.ForeColor = SystemColors.InactiveCaption;
tbUsername.Text = "Username";
}
}
Por desgracia, cuando configuración de estos eventos, el usuario no puede pestaña fuera del control de usuario. El control simplemente parpadea y el control vuelve al control de la caja de texto hasta que el usuario haya ingresado algo, omitiendo el cuerpo del evento.
Si llamo al this.SelectNextControl()
en el evento, el evento entra en un bucle infinito.
¿Alguien ve lo que estoy haciendo mal?
Interesante .. parece ser algo con TextAlign. Si lo comento, parece estar bien. – SwDevMan81
+1 Buen descubrimiento. Afortunadamente, una de las alternativas funcionará para usted, aunque ninguna es óptima. Probablemente podría publicar esto en MSDN Forums (http://social.msdn.microsoft.com/Forums/en-US/categories) para ver si saben qué está sucediendo. – SwDevMan81