.NET: Validar que introducimos números enteros en un TextBox
En una aplicación que estoy desarrollando, me he visto en la necesidad, en uno de los TextBox, de que sólo admita números enteros, ya que, en este TextBox, guardo el código postal del cliente.
Pues bien, para ello me he creado, en una clase que tengo de utilidades, en un proyecto aparte al que referencio desde el proyecto en cuestión, un procedimiento estático al que llamo desde el evento KeyPress del TextBox en cuestión. El código de dicho procedimiento estático es el siguiente:
public static void EsEntero(KeyPressEventArgs e)
{
if ((e.KeyChar >= 47 && e.KeyChar <= 58) || (e.KeyChar==8) )
{
e.Handled = false;
return;
}
else
{
e.Handled = true;
return;
}
}
De esta forma sólo admito números y el backspace, comprobando el valor ascii de la tecla pulsada, cuando introduzco datos en el TextBox.
By Rafa Vargas, September 27, 2007 @ 11:00 pm
Pero así yo podría utilizar el ratón y con [Ctrl]-V podría pegar texto…
Lo mejor es adscribirse al método Validating del control y utilizar int.TryParse().
Saludos!
By Ander, September 28, 2007 @ 9:49 am
Sí, con lo del ratón tienes razón. Ya lo he implementado al proyecto. esker anitz!!!
Por cierto, ¿vas a ir a Madrid al TTT? porque te estas ganando una camiseta de spectra a marchas forzadas ;)
By Rafa Vargas, September 28, 2007 @ 10:12 am
Que va tío! He dejado toda esta movida de los DotNetClubs, Microsoft y tal. De momento, me voy a tirar un año fuera de esta movida (sin dar charlas y este tipo de cosas) aunque eso sí, comentando en foros, blogs y tal :)
P.S: Le puedes dar una camiseta de Spectra a cualquiera de mis compañeros de Sevilla que ellos me la harán llegar.
By Jesús Serrano, August 26, 2009 @ 3:28 pm
Espero que le sea util.
public static bool ValidaEntero(string expression)
{
if (expression.Contains(”-”))
//cualquier caracter que desee limitar
return false;
if (expression == null) { return false; }
try
{
float valor = float.Parse(expression);
}
catch (FormatException)
{
return false;
}
return true;
}
By Aníbal Sánchez Numa, August 26, 2009 @ 10:28 pm
Pues yo probé la forma con el KeyPress y no te deja pegar texto incorrecto con Ctrl+V. El único problema es que por que un texto tenga sólo dígitos no significa que sea un entero utilizable por el sistema. Ej:
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Me explico??
By Ander, August 27, 2009 @ 3:38 pm
De acuerdo contigo Anibal, pero para controlar eso tenemos otros controles ;)