Soy muy nuevo en .Net y WPF y tengo un problema. El código es un fragmento. Tengo TextBox
es para ingresar las fechas. Verifico la entrada correcta usando los eventos GotFocus
y LostFocus
.WPF TextBox.Focus() fastidio
<TextBox Name="sdDay" Width="40" Text="Day" GotFocus="DateDay_GotFocus" LostFocus="DateDay_LostFocus" Padding="5,5,5,5" HorizontalContentAlignment="Center" Focusable="True"/>
<TextBox Name="sdMonth" Width="50" Text="Month" GotFocus="DateMonth_GotFocus" LostFocus="DateMonth_LostFocus" Padding="5,5,5,5" Margin="5,0,0,0" HorizontalContentAlignment="Center" Focusable="True"/>
<TextBox Name="sdYear" Width="50" Text="Year" GotFocus="DateYear_GotFocus" LostFocus="DateYear_LostFocus" Padding="5,5,5,5" Margin="5,0,0,0" HorizontalContentAlignment="Center" Focusable="True"/>
Y el código:
private void DateDay_GotFocus(object sender, RoutedEventArgs e)
{
if (((TextBox)sender).Text == "Day")
((TextBox)sender).Text = string.Empty;
}
private void DateDay_LostFocus(object sender, RoutedEventArgs e)
{
if (((TextBox)sender).Text == string.Empty)
((TextBox)sender).Text = "Day";
else
CheckForCorrectDateDay((TextBox)sender);
}
private void CheckForCorrectDateDay(TextBox b)
{
int day = 0;
try
{
day = int.Parse(b.Text);
if (day < 0 || day > 31)
{
MessageBox.Show("Please enter a correct day.");
b.Text = string.Empty;
b.Focus();
}
}
catch (FormatException)
{
MessageBox.Show("Please enter a number.", "Incorrect Input", MessageBoxButton.OK, MessageBoxImage.Warning);
b.Text = string.Empty;
b.Focus();
}
catch (Exception)
{
throw;
}
}
Ahora lo que quiero que haga es cheque de entrada correcta, y si eso no funciona, establecer el foco a lo TextBox
tenía una entrada incorrecta.
Aunque no funciona. Después de ingresar un número fuera del rango (o letra), se mostrará MessageBox
, pero el foco cambia al siguiente TextBox que es para ingresar el mes.
¿Qué estoy haciendo mal?
Gracias por la respuesta. Entiendo tu explicación del problema, pero no es exactamente lo que hace la solución. Como dije, soy muy nuevo en .Net. Y no me importaría algunos consejos sobre mejores técnicas de validación. – Moss
Claro. Se agregó más detalles a mi publicación. –
Me gustaría hacerme eco del comentario de Kent: forzar la atención hacia atrás es una forma segura de enojar a los usuarios. –