Si estas usando textBox para recibir datos que solo pueden ser numéricos, probablemente este codigo te servirá.
Necesitas una funcion (en este caso llamada IsDigit)
public static bool isDigit(KeyPressEventArgs e, string texto)
{
bool IsDec = false;
int nroDec = 0;
try
{
if (e.KeyChar ==
{
return false;
}
for (int i = 0; i < texto.Length; i++)
{
if (texto[i] == '.')
{
IsDec = true;
}
if (IsDec && nroDec++ >= 2)
{
return true;
}
}
if (e.KeyChar >= 48 && e.KeyChar <= 57)
{
return false;
}
else
{
if (e.KeyChar == 46)
{
if (IsDec)
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
}
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
}
Para usarla, en el evento KeyPress del textBox, pones lo siguiente:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = isDigit(e, textBox.Text);
}
Eso te permite meter solo números y un punto con dos decimabesl. Probablemente no sea la función mas optima, pero a mi me funciona bien.
El código lo encontré en la web del Guille.




hay librerias completas que te permiten lograr esto de diferentes maneras, mi inclinaria mas por promover el uso de tales, en vez de andar pasando malos ejemplos de codigo
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
porque??
Estaria bien que compartieras las librerias que mencionas, por que al menos lo que investigué, c# no tiene una funcion por default que haga eso.
Por que el throw, etc. Por que esa funcion la compie casi al vuelo y en el codigo del que lo copie, ese throw solo pasa el error a la funcion que la mando llamar.
Como seria el proceso correcto?
// Para validar solo enteros:
int iAux;
return int.TryParse(texto + e.KeyChar.ToString(), out iAux);
// Para validar decimales:
decimal iAux;
return decimal.TryParse(texto + e.KeyChar.ToString(), out iAux);
// No??? Y asi cualquier cosas que quieras validar….
//incluso se pueden meter para rangos, validar otro tipos de datos, etc…
int EdadMinima = 18;
int EdadMaxima = 45;
int iAux;
bool Correcto = int.TryParse(texto + e.KeyChar.ToString(), out iAux);
return Correcto && (iAux >= EdadMinima && iAux <= EdadMaxima);
No se… no lo he probado, yo así manejo mucho las validaciones de datos a nivel de paso de parametros, no para validar que el usuario no teclee cosas que no… si lo hice hace mucho, pero no recuerdo que hice, lo empaquete en una DLL y me olvide de eso jejejeje Pero creo que hice algo similar de ir caso por caso… Ademas hay que considerar teclas como TAB, ENTER, etc…
Si no sirve para esto, espero almenos les ayude en otras cosas!!
Felices códigos
Dudas aclaraciones o mentadas… en omar_chavez arroba hotmail.com
jejejeje Saludox
ps ami me sirvio bien el codigo, digo el try y el catch creo q estan de mas, pero d ahi en mas funciona excelente, grax por el aporte