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...

Insertar Registro a una BD desde un Formulario Web en C#

sábado, 10 de marzo de 2012

En este tutorial veremos como insertar un registro desde un formulario web en Asp.Net con C#.

Trabajaremos con una base de datos ejemplo que cree para este tutorial, la base de datos cuenta con una tabla llamada usuarios y contiene los campos cod_usuario (que es la llave primaria y es un campo auto incrementable), nombre, apellido, pais.
Ademas la base de datos cuenta con un procedimiento almacenado que utilizaremos para ingresar el registro
Descargar Base de Datos

Una vez que descargemos la base de datos la adjuntamos a nuestro SQL para continuar.

Lo primero que aremos es crear un nuevo sitio web vació as.pnet en visual estudio.

Proyecto asp.net

Una vez creado nuestro proyecto asp.net agregamos un webform el cual nos tiene que quedar con este diseño.

Diseño

Hecho esto nos vamos al código c# de nuestro formulario web y empezamos a programar nuestro formulario.

Lo primero que aremos sera añadir estas 2 referencias que nos sirven para trabajar con base de datos sql en asp.net
using System.Data.SqlClient;
using System.Data;


Ahora declararemos nuestra cadena de conexión a nivel de la clase con el fin de poder utilizarla en todos los eventos que programaremos.
//cadena de conexion la declaramos a nivel de la clase para utilizarla en todos los eventos.
SqlConnection cn = new SqlConnection("Data Source = .\\SQLEXPRESS; Initial Catalog = ejemplo; Integrated Security = True");

Ahora aremos un método donde cargaremos los datos al griedview de nuestra base de datos, el código va comentado para que entiendan todo.
public void cargardatos()
{
//hacemos la consulta a la base de datos
SqlCommand cmd = new SqlCommand("Select * from usuarios", cn);
//objeto adapter para hacer el enlace y llenado del dataset
SqlDataAdapter adapter = new SqlDataAdapter();
//asignamos la propiedad selectcommand al objeto command para que ejecute consulta
adapter.SelectCommand = cmd;
//abrimos la conexion
cn.Open();
//creamos objeto dataset
DataSet objdataset = new DataSet();
//llenamos el datable del dataset
//el metodo fill obtiene los datos recuperados del dataadapter y los coloca dentro del dataset
adapter.Fill(objdataset);
//cerramos conexion
cn.Close();
//enlazamos los datos al griedvied
GridView1.DataSource = objdataset;
GridView1.DataBind();
}

Ahora para que los datos que tenga la base de datos se carguen al momento de iniciar nuestro formulario web crearemos el método Load de nuestra webform y llamaremos al metodo que creamos anteriormente (el método Load sirve para cargar datos al momento que se inicializa el formulario)
protected void Page_Load(object sender, EventArgs e)
{
cargardatos();
}


Por ultimo aremos el evento click de nuestro botón para que cuando el usuario presione el botón insertar los datos se inserten en la base de datos y se muestren en el griedview, aquí es donde aremos uso del procedimiento almacenado insertar usuarios. nuevamente el código esta comentado cada linea para que comprendan.
protected void Button1_Click(object sender, EventArgs e)
{
//utilizamos el procedimiento alamacenado insertarusuarios
SqlCommand cmd = new SqlCommand("insertarusurios", cn);
//especificamos que el comando es un procedimiento almacenado
cmd.CommandType = CommandType.StoredProcedure;
//creamos los parametros que usaremos
cmd.Parameters.Add("@nombre", SqlDbType.VarChar);
cmd.Parameters.Add("@apellido", SqlDbType.VarChar);
cmd.Parameters.Add("@pais", SqlDbType.VarChar);
//asignamos el valor de los textbox a los parametros
cmd.Parameters["@nombre"].Value = TextBox1.Text;
cmd.Parameters["@apellido"].Value = TextBox2.Text;
cmd.Parameters["@pais"].Value = TextBox3.Text;
//abrimos conexion
cn.Open();
//ejecutamos la instruccion con ExcecuteNonQuerry indicando que no retorna registros.
cmd.ExecuteNonQuery();
Label1.Text = "Usuario ingresado...";
//cerramos conexion
cn.Close();
//cargamos los datos nuevamente
cargardatos();
//limpiamos los textbox
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";

}


Para terminar les dejo el código completo así les tiene que quedar al final
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
//cadena de conexion la declaramos a nivel de la clase para utilizarla en todos los eventos
SqlConnection cn = new SqlConnection("Data Source = .\\SQLEXPRESS; Initial Catalog = ejemplo; Integrated Security = True");

public void cargardatos()
{
//hacemos la consulta a la base de datos
SqlCommand cmd = new SqlCommand("Select * from usuarios", cn);
//objeto adapter para hacer el enlace y llenado del dataset
SqlDataAdapter adapter = new SqlDataAdapter();
//asignamos la propiedad selectcommand al objeto command para que ejecute consulta
adapter.SelectCommand = cmd;
//abrimos la conexion
cn.Open();
//creamos objeto dataset
DataSet objdataset = new DataSet();
//llenamos el datable del dataset
//el metodo fill obtiene los datos recuperados del dataadapter y los coloca dentro del dataset
adapter.Fill(objdataset);
//cerramos conexion
cn.Close();
//enlazamos los datos al griedvied
GridView1.DataSource = objdataset;
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
cargardatos();
}

protected void Button1_Click(object sender, EventArgs e)
{
//utilizamos el procedimiento alamacenado insertarusuarios
SqlCommand cmd = new SqlCommand("insertarusurios", cn);
//especificamos que el comando es un procedimiento almacenado
cmd.CommandType = CommandType.StoredProcedure;
//creamos los parametros que usaremos
cmd.Parameters.Add("@nombre", SqlDbType.VarChar);
cmd.Parameters.Add("@apellido", SqlDbType.VarChar);
cmd.Parameters.Add("@pais", SqlDbType.VarChar);
//asignamos el valor de los textbox a los parametros
cmd.Parameters["@nombre"].Value = TextBox1.Text;
cmd.Parameters["@apellido"].Value = TextBox2.Text;
cmd.Parameters["@pais"].Value = TextBox3.Text;
//abrimos conexion
cn.Open();
//ejecutamos la instruccion con ExcecuteNonQuerry indicando que no retorna registros.
cmd.ExecuteNonQuery();
Label1.Text = "Usuario ingresado...";
//cerramos conexion
cn.Close();
//cargamos los datos nuevamente
cargardatos();
//limpiamos los textbox
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";

}
}


Capturas de la aplicación corriendo

Diseño
Diseño

Les dejo el proyecto de la aplicación también para que lo descarguen y lo prueben con visual estudio

Descargar Proyecto

Saludos desde El Salvador...

Como Crear un Editor de Texto en C#

martes, 6 de marzo de 2012

Lo primero sera agregar un control menustrip que sera el que nos servirá para hacer el menú.



agregamos un rich textbox.



damos clic en una flechita que sale arriba del rich textbox para ver las tareas del rich textbox y seleccionamos acoplar en contenedor primario para que tome el tamaño del formulario.



luego le cambiamos el nombre al rich textbox en este caso yo le puse editor es importante que le pongan el mismo nombre para no tener problemas con los codigos de c#.



luego creamos el menu de nuestra aplicación el bloque de archivo quedaría así.



el bloque del menú editar quedaría así.



y el bloque del menú de fuente quedaría así.



luego empezamos a programar el menú empezamos con nuevo damos doble clic sobre nuevo y nos enviara al método donde se programara que tiene que hacer la aplicación cuando el usuario de clic en nuevo.



para no estar poniendo las capturas de cada método del menú aquí les dejo el código de cada método solo den doble clic en cada parte del menú y vayan pegando el código en cada método del menú.

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 TUTORIAL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo clear para limpiar el texto del rich textbox
editor.Clear();
}

private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de openfiledialogo que nos servira para abrir archivos
OpenFileDialog Open = new OpenFileDialog();
System.IO.StreamReader myStreamReader = null;
//se especifica que tipos de archivos se podran abrir y se verifica si existe
Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*";
Open.CheckFileExists = true;
Open.Title = "Abrir Archivo";
Open.ShowDialog(this);
try
{
//este codigo se utiliza para que se pueda pueda mostrar la informacion del archivo que queremos abrir en el rich textbox
Open.OpenFile();
myStreamReader = System.IO.File.OpenText(Open.FileName);
editor.Text = myStreamReader.ReadToEnd();

}
catch (Exception) { }

}

private void guardarComoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo savefiledialog que nos servira para guardar el archivo
SaveFileDialog Save = new SaveFileDialog();
System.IO.StreamWriter myStreamWriter = null;
//al igual que para abrir el tipo de documentos aqui se especifica en que extenciones se puede guardar el archivo
Save.Filter = "Text (*.txt)|*.txt|HTML(*.html*)|*.html|All files(*.*)|*.*";
Save.CheckPathExists = true;
Save.Title = "Guardar como";
Save.ShowDialog(this);
try
{
//este codigo se utiliza para guardar el archivo de nuestro editor
myStreamWriter = System.IO.File.AppendText(Save.FileName);
myStreamWriter.Write(editor.Text);
myStreamWriter.Flush();

}
catch (Exception) { }

}

private void salirToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo close para cerrar el formulario
Close();
}

private void atrasToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo undo en el rich textbox para volver atras
editor.Undo();
}

private void adelanteToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo redo en le rich textbox para regresar adelante
editor.Redo();
}

private void copiarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo copy para copiar lo que este seleccionado en el rich textbox
editor.Copy();
}

private void pegarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo paste para pegar lo que tenemos copiado en el rich textbox
editor.Paste();
}

private void cortarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo cut para cortar lo que este seleccionado en el rich textbox
editor.Cut();
}

private void seleccionarTodoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo SellecAll para seleccionar todo lo que este en el rich textbox
editor.SelectAll();
}

private void borrarTodoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo clear para limpiar el texto del rich textbox
editor.Clear();
}

private void fuenteToolStripMenuItem1_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo fontdialog que servira para cabiar el tipo de fuente y tamaño
FontDialog font = new FontDialog();
//se aplica el tipo de fuente del rich textbox al objeto que hemos creado
font.Font = editor.Font;
//se hace la condicion para cambiar el tipo de fuente al presionar el boton ok
if (font.ShowDialog() == DialogResult.OK)
{
editor.Font = font.Font;
}

}

private void colorDeFuenteToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo colordialog que servira para cabiar color de la fuente
ColorDialog color = new ColorDialog();
//se hace la condicion para cambiar el color de la fuente al presionar el boton ok
if (color.ShowDialog() == DialogResult.OK)
{
editor.ForeColor = color.Color;
}
}

private void colorDeFondoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo colordialog que servira para cabiar color del rich textbox
ColorDialog fondo = new ColorDialog();
//se hace la condicion para cambiar el tipo de color del rich textbox al presionar el boton ok
if (fondo.ShowDialog() == DialogResult.OK)
{
editor.BackColor = fondo.Color;
}
}
}
}




para una mejor comprensión el código esta comentado cualquier duda que tengan la pueden preguntar aqui al final les tiene que quedar la aplicación así..

Formulario de Contacto


formulario de contacto