Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NET
CAPÍTULO 8
EVENTOS
Preguntas detonadoras
Evento
Mecanismo mediante el cual una clase
puede proporcionar notificaciones a sus
clientes cuando ocurre algún suceso
importante con sus objetos.
Uso de eventos
Requisitos:
1. Clase cuyos objetos generan el evento
(publicadora).
2. Las clases cuyos objetos reciben el evento
(suscriptoras).
Diseño de eventos
Declaración de un evento
La clase publicadora debe:
1. Definir un delegado para dicho evento.
EventHandler
// Evento
public event DelegadoEventHandler Evento;
Generación de un evento
La clase publicadora genera el evento:
// Delegado definido por el programador
public delegate void DelegadoEventHandler(string strMensaje);
// Evento
public event DelegadoEventHandler Evento;
// Suscripción al evento
10
miObjeto.Evento += MetodoGestor;
11
12
Métodos
Constructor()
Depositar()
Retirar() 13
14
Diseño de la clase
15
// Delegado
public delegate void CambiarSaldoEventHandler(string
strCliente, string strCuenta, double dblSaldo);
// Evento
public event CambiarSaldoEventHandler CambioSaldo;
16
// Genera el evento
CambioSaldo(this.Cliente, this.Cuenta, this.Saldo);
}
else
throw new Exception("Cantidad inválida !!!");
}
17
// Genera el evento
CambioSaldo(this.Cliente,this.Cuenta,this.Saldo);
}
else
throw new Exception("Saldo insuficiente !!!");
}
18
// Suscripción al evento
miCuentaBancaria.CambioSaldo += MetodoGestor;
19
Ejemplo de ejecución
20
21
La interfase INotifyPropertyChanged
Sintaxis de INotifyPropertyChanged
public interface INotifyPropertyChanged
23
Implementación de
INotifyPropertyChanged
La clase publicadora debe:
1. Definir un evento de nombre
PropertyChanged de tipo
PropertyChangedEventHandler de la
interfase INotifyPropertyChanged
2. Implementar un método que dispare el evento.
3. Invocar el método disparador del evento al
modificar el valor de una propiedad
24
Ejemplo de INotifyPropertyChanged
Una clase llamada Artículo tiene 4 atributos
con sus respectivas propiedades
Código (string)
Nombre (string)
Precio (double)
Cantidad en existencia (double)
Requiere enviar una notificación a sus suscriptores
cuando se modifique el valor de alguna de sus
propiedades
25
Diseño de la clase
26
Método gestor
Se invoca al suscribirse al evento de la clase
publicadora
Se codifica fuera de la clase suscriptora y/o de la
clase publicadora
P. ejem. En la forma
29
Suscribirse al evento
Se suscribe al manejador del evento
PropertyChangedEventHandler de la clase
publicadora y se envía como parámetro el
nombre del método gestor
Articulo miArticulo = new Articulo();
miArticulo.Codigo = “JJGH-8998";
miArticulo.Nombre = "Jugo de arándanos";
miArticulo.Precio = 123.55;
miArticulo.CantidadExistencia = 2345;
30
31
32
La clase MailMessage
33
34
miMensaje.To.Add(new
MailAddress(“takeyas@itnuevolaredo.edu.mx”));
miMensaje.From = new
MailAddress(“brunotakeyas@hotmail.com”,”Bruno Lopez
Takeyas”);
El objeto miMensaje
miMensaje
36
La clase CorreoElectronico
class CorreoElectronico
{
public CorreoElectronico(string strDireccionServidor, int intPuerto, string strEmailRemitente, string strPassword) {
DireccionServidor = strDireccionServidor;
Puerto = intPuerto;
EmailRemitente = strEmailRemitente;
Password = strPassword;
}
switch (cboNombreServidor.Text)
{
case "Hotmail": intPuerto = 25;
strDireccionServidor = "smtp.live.com"; break;
case "Yahoo !": intPuerto = 587;
strDireccionServidor = "smtp.yahoo.com"; break;
case "Gmail": intPuerto = 25;
strDireccionServidor = "smtp.gmail.com"; break;