Permitir Solo Ingreso de Valores Numericos en C#

viernes, 30 de marzo de 2012

Sabemos que como desarrolladores conviene controlar los eventos de nuestras aplicaciones, para cuando el usuario realize algo que nosotros no queremos muestre mensajes y advertencias.

En este caso aremos una aplicación que pida el ingreso de 2 números y si los valores ingresados son numéricos realizara la multiplicación de los 2 valores, si no mostrara mensajes al usuario para que ingrese valores numéricos.

Para empezar creamos un nuevo proyecto de aplicación windows y le damos el siguiente diseño.

2 label
para pedir el ingreso de los valores.
3 textbox 2 para capturar los valores y el 3 para mostrar el resultado de la multiplicación.
1 boton que al presionarlo verificara si los datos son numéricos y realizara la multiplicación si no mostrara mensaje.
y agregaremos un control errorprovider este nos servirá para mostrar un icono de error en los textbox si el usuario ingresa valores no numéricos.

Diseño

Ahora que tenemos el diseño empezamos a programar vamos al código de nuestro formulario.Y creamos un método que nos servirá para validar si un valor es numérico.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ValidarIngresoNumeros
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


//metodo para validar si los valores son numericos
private bool IsNumeric(string num)
{
try
{
double x =Convert.ToDouble(num);
return true;
}
catch (Exception)
{
return false;
}
}

}
}


Como puede verse el la linea 21 creamos un método bool con un parametro string.
en la linea 25 declaramos una variable double y convertimos el parametro string a double y retornamos true. Luengo en la linea 30 retornamos false (osea el valor sigue siendo string).

Ahora que ya tenemos un método para verificar si un valor es numérico creamos el evento click del boton.

private void button1_Click(object sender, EventArgs e)
{
//si los valores ingresados no son numericos muestro mensaje con errorprovider
if (!IsNumeric(textBox1.Text) && (!IsNumeric(textBox2.Text)))
{
errorProvider1.SetError(textBox1, "debe ingresar un numero");
errorProvider1.SetError(textBox2, "debe ingresar un numero");
MessageBox.Show("Debe Ingresar Valores Numericos");
}
//si no entonces realizo la multiplicacion
else
{
errorProvider1.SetError(textBox1, "");
errorProvider1.SetError(textBox2, "");
double x, y;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox2.Text);
textBox3.Text = String.Format("{0:F2}", x * y);
}
}


En la linea 4 tenemos una condición en la que usamos el método que creamos, lo que estamos diciendo en esta condición es que si el valor ingresado en los 2 textbox es la negación falsa del método IsNumeric (osea la negación false del método). mostramos los mensajes con errorprovider en los textbox.
Como se puede ver en la linea 13 y 14 utilizamos la propiedad SetError del control errorprovider para mostrar un icono y un mensaje en los 2 textbox, ademas en la linea 15 también mostramos un mensaje con MessageBox.

Si no se cumple la condición anterior (osea si los valores ingresados si son numéricos) entonces como pueden ver no muestro ningún mensaje de error y realizo la multiplicación.

Imágenes de la aplicación corriendo.

En este caso si el usuario no ingresa valores numéricos como puede verse se muestra un mensaje de dialogo.

Diseño Error

También puede verse los iconos de error en los textbox y al colocar el control sobre esos iconos mostrara un mensaje de error también.

Diseño Error

Ahora una imagen de si los datos ingresados son numéricos realiza la multiplicación.

Diseño sin Error

Como siempre les dejo el proyecto de la aplicación
>Descargar Proyecto

Saludos desde El Salvador...

0 comentarios:

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.