contactAdmin


UrlImage Control 

Como proposito, se intenta tener un control que pueda cargar una imagen en un PictureBox pasandole una direccion de internet (url) de donde tomarla.

Elementos en disenho del control de usuario

 urlImage en disenho

El control consta de 3 PictureBoxes. Dos de ellos se van a usar como ayudas para que guarden una imagen cada uno, en pbxLoading vamos a poner una imagen que represente que el control esta trabajando y en pbxNotFound vamos a poner una imagen para representar un error en el cargado de la imagen solicitada.  Estos controles siempre permaneceran ocultos (Visible = false) y tomaremos de ellos las imagenes para ponerlas en el pictureBox1 cuando las requiramos.

Codigo detras del control

urlImage codigo

Aqui en codigo podemos ver que estamos utilizando el evento Resize del UserControl para hacer que pictureBox1 cubra toda la superficie de nuestro control.  Y ademas agregando un metodo publico llamado GetImage(string url) con el cual podremos pedirle al control que intente cargar la imagen de internet que le proporcionemos con el parametro url

En GetImage(), primero pasamos la imagen que esta en pbxLoading al PictureBox principal, y despues intentamos (por medio de un try) cargar la imagen desde internet a nuestro PictureBox.  Esto lo logramos con la ayuda de la clase HttpWebRequest, donde especificamos la direccion de internet, y obtenemos su ResponseStream para pasarselo al PictureBox e intente mostrarlo a pantalla; en caso de algun error | excepcion, lo indicaremos cargando la imagen que se encuentra en pbxNotFound.

Anuncios

contactAdmin

 codigo del proyecto para administracion de contactos desarrollado en clase hasta el jueves 26 de abril…

 la base de datos esta dentro de la carpeta [/clases]

hay que darle click-derecho a la liga y seleccionar la opcion de guardar…
despues renombrar a .zip

Administrador de Contactos> en esta sesion, agregamos un boton mas a nuestra aplicacion de contactos, con la finalidad de poder editar un contacto existente.

Ventana de Aplicacion

…con esto, se agregaron dos metodos al codigo de la forma:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

con este metodo manejamos el evento click del ListBox, y hacemos varias cosas:

– activamos el boton “actualizar”, deshabilitamos el boton “agregar”, y el TextBox para “email” (esto porque email es nuestro identificador unico y no permitiremos que se modifique).

el segundo metodo es:

private void button6_Click(object sender, EventArgs e)

en este metodo manejamos el click para el boton “actualizar”, y hacemos lo sig>:

– actualizamos en tabla los datos del contacto seleccionado; regresamos a los botones a su estado de “agregar”

—–

A continuacion el codigo completo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace uacj_Contactos
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
private void Form1_Load(object sender, EventArgs e)
  {
  displayContacts("1=1");
  }
private void displayContacts(string filtro) {
  listBox1.Items.Clear();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE ("+filtro+") ORDER BY nombre ASC");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {
  listBox1.Items.Add(reader["nombre"].ToString() + " - " + reader["email"].ToString());
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }
private void button3_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%yahoo.com%'");
  }
private void button4_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%hotmail.com%'");
  }

private void button5_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%"+textBox3.Text+"%'");
  }

private void button1_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("INSERT INTO contactos (email,nombre) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button2_Click(object sender, EventArgs e)
  {
  string[] valores = listBox1.Text.Split('-');
  string email = valores[valores.Length-1].Trim();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("DELETE FROM contactos WHERE (email = '"+email+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button6_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand(
  "UPDATE contactos SET nombre = '" +
  textBox2.Text + "' WHERE (email = '" + textBox1.Text + "')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  textBox1.Enabled = true;
  button6.Enabled = false;
  button1.Enabled = true;
  textBox1.Text = "";
  textBox2.Text = "";

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
  {
  button1.Enabled = false;
  button6.Enabled = true;
  textBox1.Enabled = false;
  string[] valores = listBox1.Text.Split('-');
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE (email = '"+valores[1].Trim()+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read())
  {
  textBox1.Text = reader["email"].ToString();
  textBox2.Text = reader["nombre"].ToString();
  // asi con cada columna de nuestro contacto...
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }
  }
}

descargar el proyecto: Proyecto Completo
Nota del archivo: es un .zip pero el blog no me lo acepto asi que lo renombre a .zip.gif; fovor de renombrarlo a .zip para poder extraer su contenido;
Nota 2: copiar la base de datos a C:, o bien, actualizar la ruta en el connectionString del OleDbConnection.

Disculpas por la tardanza... :P

En esta sesion vimos una introduccion al uso de bases de datos desde una aplicacion de windows en .NET; especificamente trabajamos con una base de datos en MSAccess.

Nos enfocamos a utilizar las clases OleDbConnection, OleDbCommand, y OleDbDataReader del nombre de espacio System.Data.OleDb.  Nuestra base de datos consta de una sola tabla llamada contactos, con dos campos (email, nombre):

Tabla Contactos

La aplicacion consta de una ventana (Form) similar a esta:

Forma Principal

Esta forma cuenta con..
una lista (ListBox) para desplegar el contenido de la tabla contactos,
2 cajas de texto (TextBox) para agregar un nuevo contacto,
metodos para filtrar el despliegue de contacto en la lista,
boton para borrar el contacto seleccionado.

El codigo detras de esta ventana es el siguiente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace uacj_Contactos
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
private void Form1_Load(object sender, EventArgs e)
  {
  displayContacts("1=1");
  }
private void displayContacts(string filtro) {
  listBox1.Items.Clear();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE ("+filtro+") ORDER BY nombre ASC");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {
  listBox1.Items.Add(reader["nombre"].ToString() + " - " + reader["email"].ToString());
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }

private void button3_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%yahoo.com%'");
  }

private void button4_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%hotmail.com%'");
  }

private void button5_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%"+textBox3.Text+"%'");
  }

private void button1_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("INSERT INTO contactos (email,nombre) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button2_Click(object sender, EventArgs e)
  {
  string[] valores = listBox1.Text.Split('-');
  string email = valores[valores.Length-1].Trim();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("DELETE FROM contactos WHERE (email = '"+email+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }
  }
}

Material de ayuda:

– Proyecto de Visual Studio 2005 (contactos.mdb incluida) Proyecto completo
Nota del archivo: es un .zip pero el blog no me lo acepto asi que lo renombre a .zip.gif; fovor de renombrarlo a .zip para poder extraer su contenido;
Nota 2: copiar la base de datos a C:, o bien, actualizar la ruta en el connectionString del OleDbConnection.

– Ayuda para connectionStrings:  http://www.connectionstrings.com