Asegurarse de coger números correctos en un TextBox con las excepciones
Artículo por Club Developers · 09 mayo 2006
2858 vistas
En el Validating de o de los TextBox....
Para números reales:
Para números decimales:
No tenemos que olvidarnos de escribir el carácter separador decimal correcto:
Para números enteros:
Para números reales:
csharp
private void TextBox_Validating(object sender, CancelEventArgs e) {     {       TextBox T = ((TextBox)sender);       try       {        Double.Parse(T.Text);        epErrorProvider.SetError(T, "");       }       catch (ArgumentNullException)       {        epErrorProvider.SetError(T, "¡Tiene que introducir un valor!");        T.SelectAll();        e.Cancel = true;       }       catch (OverflowException)       {        epErrorProvider.SetError(T, "Número demasiado grande");        T.SelectAll();        e.Cancel = true;       }       catch (FormatException)       {        epErrorProvider.SetError(T, "Formato incorrecto");        T.SelectAll();        e.Cancel = true;       }     } }
Para números decimales:
csharp
private void TextBox_Validating(object sender, CancelEventArgs e)    {     {       TextBox T = ((TextBox)sender);       try       {        Decimal.Parse(T.Text);        epErrorProvider.SetError(T, "");       }       catch (ArgumentNullException)       {        epErrorProvider.SetError(T, "¡Tiene que introducir un valor!");        T.SelectAll();        e.Cancel = true;       }       catch (OverflowException)       {        epErrorProvider.SetError(T, "Número demasiado grande");        T.SelectAll();        e.Cancel = true;       }       catch (FormatException)       {        epErrorProvider.SetError(T, "Formato incorrecto");        T.SelectAll();        e.Cancel = true;       }     }    }
No tenemos que olvidarnos de escribir el carácter separador decimal correcto:
csharp
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)    {     // almacenamos el separador decimal del sistema     char Separador = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];     // si se trata de un separador     if ((e.KeyChar == '.') || (e.KeyChar == ','))     {       // forzamos la escritura del separador correcto       e.KeyChar = Separador;     }    }
Para números enteros:
csharp
private void TextBox_Validating(object sender, CancelEventArgs e)    {     {       TextBox T = ((TextBox)sender);       try       {        Integer.Parse(T.Text);        epErrorProvider.SetError(T, "");       }       catch (ArgumentNullException)       {        epErrorProvider.SetError(T, "¡Tiene que introducir un valor!");        T.SelectAll();        e.Cancel = true;       }       catch (OverflowException)       {        epErrorProvider.SetError(T, "Número demasiado grande");        T.SelectAll();        e.Cancel = true;       }       catch (FormatException)       {        epErrorProvider.SetError(T, "Formato incorrecto");        T.SelectAll();        e.Cancel = true;       }     }    }