[C# - Validar] Habilitar botón al escribir en Textbox

Introducción

En este articulo les voy a mostrar como poder habilitar un botón al escribir dentro de una o mas cajas de texto (textbox). Esta es una forma de poder validar que nuestras cajas de texto no estén vacías al aceptar para realizar una operación.

Interfaz Gráfica y Procedimiento

La interfaz gráfica es la siguiente:


En la cual verán que inicia con el botón deshabilitado. Es necesario hacer esto en el evento de carga del formulario

        private void validarFrm_Load(object sender, EventArgs e)
        {
            aceptarBtn.Enabled = false;
        }

Por otro lado, debemos asignar el mismo evento TextChanged a las tres cajas de texto (textbox), por lo cual debemos asignarle el nombre del evento creado por nosotros:

        private void textBox_TextChanged(object sender, EventArgs e)
        {
            var bl = !string.IsNullOrEmpty(txtNombre.Text) &&
                                !string.IsNullOrEmpty(txtApellido.Text) &&
                                !string.IsNullOrEmpty(txtEdad.Text);

            aceptarBtn.Enabled = bl;
        }

En este evento declaramos una variable que va a devolver un valor booleano dependiendo la condición que hagamos. En este caso, utilizamos IsNullOrEmpty para verificar si la caja de texto esta vacía.

Para asignar el mismo evento a las cajas de texto debemos buscar el evento TextChanged y asignarle el nombre textBox_TextChanged.


[C#] Validar instrucción ABM con ExecuteNonQuery()

Introducción

En este articulo les voy a mostrar como poder validar cuando insertamos, modificamos o eliminamos un registro en una tabla de la base de datos. Estas instrucciones debemos ejecutarlas con el método ExecuteNonQuery() del objeto SqlCommand.

Procedimiento

El método ExecuteNonQuery devuelve el numero de filas afectadas en la instrucción. Por lo cual, si insertamos un nuevo registro nos va a devolver 1. Ocurre lo mismo si modificamos o eliminamos.

Esto ocurre si escribimos la instrucción desde nuestro proyecto de la siguiente manera:

Ejemplo de Alta:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "INSERT INTO Persona VALUES(@Nombre,@Apellido)";
                SqlCommand cmd = new SqlCommand(ConsultaAlta,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Modificar

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaModificar = "UPDATE Persona SET Nombre=@Nombre,Apellido@Apellido WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaModificar,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Baja

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaEliminar = "DELETE FROM Persona WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaEliminar, cnn);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Pero hay veces, que nosotros preferimos utilizar un procedimiento almacenado y llamarlo desde nuestro código:


[C# - Linq] Buscar en Datagridview y ordenar resultados con LINQ utilizando lista generica

Introducción

En este articulo les voy a mostrar como buscar en una datagridview y ordenar los resultados con LINQ. Utilizaremos para buscar la extensión Contains y para ordenar los resultados en forma ascendente o descendente con orderby.

Interfaz Gráfica

La interfaz gráfica es la siguiente:



Procedimiento

Vamos a utilizar la base de datos AdventureWorks2012, en caso de no tener dicha base de datos, podes ver este link  para descargarla e instalarla.

Luego de tener nuestra base de datos preparada, vamos a utilizar la tabla Person.Person y de dicha tabla vamos a usar las columnas BusinessEntityID, FirstName, MiddleName y LastName.

Luego de crear nuestro proyecto, agregamos una clase llamada personEn que va a contener las propiedades que van a corresponder a cada columna

    class personEn
    {
        public int codEn { get; set; }
        public string firstName { get; set; }
        public string middleName { get; set; }
        public string lastName { get; set; }
    }

En el evento load del formulario vamos a cargar nuestro datagridview

        private void BuscarOrdenarFrm_Load(object sender, EventArgs e)
        {
            itemsCMB.SelectedIndex = 0;
            dataDG.DataSource = getPersons();

            dataDG.Columns[0].Width = 120;
            dataDG.Columns[1].Width = 120;
            dataDG.Columns[2].Width = 120;
            dataDG.Columns[3].Width = 120;
        }

        private List<personEn> getPersons()
        {
            using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["CNNBD"].ToString()))
            {
                cnn.Open();

                string query = "SELECT BusinessEntityID,FirstName, " +
                                    "MiddleName,LastName FROM Person.Person";
                SqlCommand cmd = new SqlCommand(query, cnn);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    personEn person = new personEn();
                    person.codEn = reader.GetInt32(0);
                    person.firstName = reader[1].ToString();
                    person.middleName = reader[2].ToString();
                    person.lastName = reader[3].ToString();

                    personList.Add(person);
                }
            }

            return personList;
        }

En el sqlconnection utilizo la clase ConfigurationManager para obtener la cadena de conexión a nuestra base de datos.


[C#] Cadena de Conexión en el Archivo de configuración (App.Config)

Introducción

En este articulo les voy a explicar como configurar y luego tomar nuestra cadena de conexión hacia una base de datos. La cadena de conexión se va almacenar en nuestro archivo de configuración bajo la etiqueta connectionStrings. Unas de las ventajas que tenemos es que dicha cadena la vamos a poder modificar luego de instalar nuestra aplicación en un cliente, además bajo la etiqueta connectionStrings se permite agregar n conexiones que van a ser identificadas con el atributo name de dicha etiqueta.

Procedimiento

Debemos agregar nuestro archivo de configuración para configurar el elemento connectionStrings para eso hacemos clic sobre nuestro proyecto con el botón secundario del mouse y hacemos clic en agregar --> nuevo elemento sobre elementos de c# hacemos clic en general y seleccionamos archivo de configuración de aplicación. Ojo: no debemos confundir con el archivo de configuración ya que este no es el mismo.



Hacemos clic en aceptar sin cambiar el nombre del archivo. Por defecto se llama: App.config



Este es el contenido de nuestro App.config en el cual como dijimos anteriormente debemos agregar el elemento connectionStrings. Este elemento tiene la etiqueta add que permite agregar n conexiones.
Dentro de esta etiqueta add poseemos ciertas propiedades que permiten configurar nuestra cadena de conexión:
  • connectionString
  • name
  • providerName
La propiedad que vamos a utilizar desde el código es name que nos va a permitir llamar a dicha conexión.
Por lo cual por ahora nos quedaria nuestro app.config

  
    
  


Luego de crear y configurar nuestro app.config debemos llamar a nuestra cadena de conexión desde el código, para ello debemos primero agregar la referencia system.configuration a nuestro proyecto


[C#] Manipulación de directorios -- System.IO.Directory

Introducción

En este articulo les voy a explicar como poder crear, eliminar y listar directorios. Ademas como listar archivos y eliminar todo el contenido de un directorio.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Todo esto va ser posible gracias a la clase que nos provee el .NET Framework llamada Directory que se encuentra en el espacio de nombres System.IO.

Debemos importar nuestra referencia para obtener acceso a dicha clase

using System.IO;

Crear Directorio

Vamos a comenzar por crear un directorio, esto es posible con el método CreateDirectory en el cual debemos pasar como argumento la ruta de la ubicación de nuestro directorio junto al nombre de nuestro nuevo directorio. Es por eso que en nuestra interfaz tenemos un FolderBrowserDialog (...) que nos sirve para buscar la ubicación y el textbox directorio en el cual vamos a indicar el nombre de nuestro nuevo directorio.

        private void buscarBtn_Click(object sender, EventArgs e)
        {
            BDirectorio.ShowDialog();
            rutaTxt.Text = BDirectorio.SelectedPath;
        }

Para crear nuestro nuevo directorio

        private void crearBtn_Click(object sender, EventArgs e)
        {
            string ruta = string.Empty;

            if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio");
            }
            else if(Directory.Exists(rutaTxt.Text + @"\" + directorioTxt.Text))
            {
                MessageBox.Show("El directorio ya existe");
            }
            else { 
                ruta = rutaTxt.Text; 
                Directory.CreateDirectory(ruta + @"\" + directorioTxt.Text); 
            }
        }

Verán que estoy realizando una serie de validaciones para evitar que pinche nuestro programa, de hecho podríamos poner un try catch y lanzar una excepción personalizada, pero lo hice de este modo para que puedan entender y ademas conocer otros métodos que expone la clase Directory para poder validar.

Primeros validamos si nuestro ubicación esta vacía utilizando el método IsNullOrEmpty, si es así, significa que no hemos seleccionado ninguna ubicación y mostramos un mensaje.


[C#] Ejecutar aplicación como administrador

Introducción

En este artículo voy a explicar como hacer para poder ejecutar una aplicación con privilegios de administrador. Esto a veces es necesario para poder ejecutar correctamente nuestra aplicación si utilizamos algún servicio de nuestro sistema operativo o tal ves si manejamos carpetas, ya sea crearlas, modificar alguna existente o eliminar alguna.

Procedimiento

Todo lo que debemos hacer es crear un nuevo archivo llamado archivo de manifiesto de aplicación.

Para crear este archivo debemos hacer clic con el boton secundario de nuestro mouse sobre el nombre del proyecto y hacer clic en Agregar --> Nuevo elemento


[C#] Cargar ComboBox a partir de una lista genérica

Introducción

En este artículo les voy a explicar como cargar un ComboBox utilizando una lista genérica (List(Of T)).

A modo de ejemplo voy a crear una tabla Usuario con los siguientes campos: CodUsu, Usuario, Contraseña y CorreoElectronico.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Vamos a poder seleccionar un usuario y a partir de la selección vamos a obtener su código y su correo electrónico.