Enlace estático de eventos

Enlace estático de eventos

Este es el modo mas sencillo para implementar la conexión entre un evento y un procedimiento manipulador de evento.

En primer lugar, declaramos una variable del tipo de objeto cuyos eventos queremos capturar, en la zona de declaraciones del módulo, clase, etc., utilizando la palabra clave WithEvents. Veamos el Código fuente 336.

Module Module1

Private WithEvents moEmple As Empleado '...... '......

Código fuente 336

A continuación, tenemos que escribir el procedimiento manipulador, que será invocado cada vez que se dispare el evento. Dicho procedimiento debe ser de tipo Sub, ya que un evento no puede devolver valores, por lo que no podremos utilizar un Function; también debemos finalizar su declaración con la palabra clave Handles, seguida del nombre de la variable del objeto que hemos declarado en la zona de declaraciones, y el nombre del evento que el procedimiento va a tratar. En el Código fuente 337, el procedimiento moEmple_LimiteSueldo( ), será llamado cada vez que se produzca el evento LimiteSueldo en el objeto Empleado.

Public Sub moEmple_LimiteSueldo(ByVal ldbImporte As Double) _ Handles moEmple.LimiteSueldo

Console.WriteLine("Se ha sobrepasado para {0} el límite" & _ " establecido de sueldo", _ moEmple.Nombre)

Console.WriteLine("El importe {0} no es válido", ldbImporte) Console.ReadLine()

End Sub

Código fuente 337

El nombre utilizado para el procedimiento puede ser cualquiera, aunque en este caso hemos empleado la convención NombreObjeto_NombreEvento simplemente para facilitar la lectura del código, pero podríamos haber empleado, por ejemplo, el que se muestra en el Código fuente 338.

Public Sub Sobrepasado(ByVal ldbImporte As Double) _ Handles moEmple.LimiteSueldo ' ....

© Grupo EIDOS 22. Delegación de código y eventos

' .... End Sub

Código fuente 338

Un pequeño truco que tenemos en el editor de código de VS.NET, para facilitar la creación de los procedimientos manipuladores de evento, consiste en abrir la lista Nombre de clase y seleccionar el nombre de la variable que hemos declarado WithEvents. Ver Figura 207.

Figura 207. Seleccionar objeto declarado WithEvents.

Seguidamente pasamos a la lista Nombre de método, y allí elegimos el nombre del evento que vamos a codificar. Ver Figura 208.

Figura 208. Seleccionar el evento a codificar.

Esto nos crea el procedimiento manipulador de evento vacío, en base a una convención de nombres predefinida en el IDE. Ver Código fuente 339.

Public Sub moEmple_LimiteSueldo(ByVal ldbImporte As Double) Handles moEmple.LimiteSueldo

End Sub

Código fuente 339

Como hemos escrito el manipulador de evento para el objeto Empleado en un módulo, vamos ahora a escribir un procedimiento Main(), instanciando en el mismo, un objeto de esta clase. Asignaremos en primer lugar, un valor correcto a la propiedad Sueldo, y a continuación un valor que provocará el evento en la clase. Recomendamos al lector que ejecute el código línea a línea con el depurador, para observar el efecto cuando se produzca el evento.

Sub Main() moEmple = New Empleado() moEmple.Nombre = "Juan" moEmple.Sueldo = 500 ' esta asignación no provoca el evento moEmple.Sueldo = 8000 ' esta sí provoca el evento

Programación con Visual Basic .NET © Grupo EIDOS

End Sub

Código fuente 340