Crear nuestros propios eventos
Artículo por Club Developers · 10 mayo 2006
2181 vistas
Para gestionar los eventos en Visual Basic tendremos que realizar los siguientes pasos:
Imaginemos la siguiente clase:
Queremos que se dispare un evento si es el cumpleaños del objeto persona. Para ello crearemos un argumento partucular llamado HappyBirthDayEventArgs que contendrá la edat de la persona:
Ahora tendremos que añadir un delagado al inicio de la clase 'Persona'. Un delegado es el que permite hacer el enlace entre el evento y el gestionador del evento.
Por otro lado, también tendremos que declarar el evento en la clase.
Vamos a modificar la propiedad Age de la clase Persona para lanzar el evento:
Ahora podemos enlazarnos al evento, por ejemplo:
- Crear un argumento personalizado si es necesario
- Declarar un delegado en la clase que genera el evento
- Declarar el evento en la clase que lo genera
- Llamar al evento
Imaginemos la siguiente clase:
vbnet
Public Class Persona Private m_Nombre, m_Apellido As String Private m_BirthDay As Date Public Sub New(ByVal Nombre As String, ByVal Apellido As String, ByVal Birthday As Date) m_Nombre = Nombre m_Apellido = Apellido m_BirthDay = Birthday End Sub Public ReadOnly Property Identite() As String Get Return Me.m_Nombre & " " & Me.m_Apellido End Get End Property Public ReadOnly Property Age() As Int32 Get Return DateDiff(DateInterval.Year, m_BirthDay, Now.Date, FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1) End Get End Property End Class
Queremos que se dispare un evento si es el cumpleaños del objeto persona. Para ello crearemos un argumento partucular llamado HappyBirthDayEventArgs que contendrá la edat de la persona:
vbnet
Public Class HappyBirthDayEventArgs Inherits System.EventArgs Private m_Age As Int32 Public Sub New(ByVal MyAge As Int32) m_Age = MyAge End Sub Public ReadOnly Property Age() As Int32 Get Return m_Age End Get End Property End Class
Ahora tendremos que añadir un delagado al inicio de la clase 'Persona'. Un delegado es el que permite hacer el enlace entre el evento y el gestionador del evento.
Por otro lado, también tendremos que declarar el evento en la clase.
vbnet
Public Class Personne Delegate Sub HappyBirthDayEventHandler(ByVal sender As Object, ByVal e As HappyBirthDayEventArgs) Public Event HappyBirthDayEvent As HappyBirthDayEventHandler ....
Vamos a modificar la propiedad Age de la clase Persona para lanzar el evento:
vbnet
Public ReadOnly Property Age() As Int32 Get If Me.m_BirthDay.Day = Now.Day AndAlso Me.m_BirthDay.Month = Now.Month Then RaiseEvent HappyBirthDayEvent(Me, New HappyBirthDayEventArgs(DateDiff(DateInterval.Year, m_BirthDay, Now.Date, FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1))) End If Return DateDiff(DateInterval.Year, m_BirthDay, Now.Date, FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1) End Get End Property
Ahora podemos enlazarnos al evento, por ejemplo:
vbnet
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bidou As New Persona("Rabilloud", "Jean-Marc", #10/12/1967#) AddHandler bidou.HappyBirthDayEvent, AddressOf Cumpleanos Dim MyAge As Int32 = bidou.Age End Sub Private Sub Cumpleanos(ByVal sender As Object, ByVal e As HappyBirthDayEventArgs) End Sub