Como ventaja adicional, el objeto sobre el que vamos a manipular sus eventos podemos declararlo
tanto a nivel local como en la zona de declaraciones, a diferencia del enlace estático, que nos obliga a
declarar el objeto en la zona de declaraciones del módulo en el que vayamos a utilizarlo.
Para establecer un enlace dinámico entre un evento y un manipulador, utilizaremos la instrucción
AddHandler. Esta instrucción, recibe como primer parámetro el evento a conectar en el formato
NombreObjeto.NombreEvento. Como segundo parámetro, pasaremos la dirección de entrada al procedimiento que deberá ejecutar el evento, y que obtenemos a través de la instrucción AddressOf. El
Código fuente 338, muestra el procedimiento Main( ), en el que pedimos al usuario que introduzca un
número, y según el valor obtenido, conectamos el evento con uno de los dos procedimientos
manipuladores antes descritos.
Module Module1
'....
'....
Sub Main()
' pedir un número al usuario para conectar a uno de los
' dos procedimientos manipuladores de evento que hemos escrito
Dim liTipoManip As Integer
Console.WriteLine("Introduzca el número 1 ó 2," & _
" para seleccionar el manipulador de evento a utilizar")
liTipoManip = Console.ReadLine()
' instanciar un objeto Empleado
Dim loMiEmpleado As New Empleado()
' asignar un manejador de evento en tiempo de ejecución
' en función del número que el usuario ha introducido
Select Case liTipoManip
Case 1
AddHandler loMiEmpleado.LimiteSueldo, AddressOf SobreAsignacionSueldo
Case 2
AddHandler loMiEmpleado.LimiteSueldo, AddressOf SalarioIncorrecto
End Select
loMiEmpleado.Nombre = "ANTONIO"
' esta asignación provoca el evento,
' ello ejecutará uno de los manipuladores
' de evento que hemos conectado
loMiEmpleado.Sueldo = 2500
Console.ReadLine()
End Sub
'....
'....
End Module
Código fuente 338
No hay comentarios:
Publicar un comentario