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
Parts
» Visual branding biro perjalanan alam (1)
» El manifiesto del ensamblado
» Instalación de Visual Studio .NET
» Grabando texto en un fichero
» Principales elementos en nuestro entorno de trabajo
» Manejo de ventanas adicionales del IDE
» Conceptos mínimos sobre depuración
» Comparación de cadenas en base a un patrón. El operador Like
» Uso de paréntesis para mejorar la legibilidad de expresiones
» Sintaxis de un procedimiento Function
» Sobrecarga de procedimientos
» Abordando un problema mediante programación procedural
» Creación de propiedades para la clase
» Encapsulación a través de propiedades
» Creación de métodos para la clase
» Sobrecarga de métodos o polimorfismo, en una misma clase
» Espacios de nombres (namespaces)
» Acceso a espacios de nombre de otros ensamblados
» Herencia y sobre-escritura de métodos
» Diferencias entre sobrecarga y sobre-escritura en base al tipo de enlace
» Ocultamiento de miembros de una clase
» Comportamiento de las palabras clave Me, MyClass y MyBase ante la sobre-escritura de métodos
» Herencia y métodos constructores
» Clases abstractas o no instanciables
» Comprobación del tipo de un objeto y moldeado (casting)
» Destrucción de objetos y recolección de basura
» Creación y manipulación de estructuras
» Estructuras o clases, ¿cuál debemos utilizar?
» Manipulación de cadenas con la clase String
» Optimizando la manipulación de cadenas con la clase StringBuilder
» Extender las funcionalidades de una clase a través de delegados
» La clase EventArgs, o cómo obtener información del objeto emisor del evento
» Obtención de subarrays a partir de un objeto ArrayList
» Manejo básico de colecciones Hashtable
» Operaciones varias con colecciones Hashtable
» Manipulación de valores en una colección Queue
» Implementando un interfaz para crear una nueva colección
» Manipulación estructurada de errores
» La influencia del orden de los manipuladores de excepciones
» Creación de excepciones personalizadas
» Manipulación de archivos mediante File y FileInfo
» Manipulación de archivos mediante Directory y DirectoryInfo
» Monitorización del sistema de archivos con FileSystemWatcher
» Creación de un formulario básico
» Iniciar el formulario desde Main( )
» Codificación de los eventos de controles
» Selección de texto en un TextBox
» Compartiendo código entre controles
» Crear una clase derivada de un control
» Agregar un proyecto con un formulario derivado
» Crear un formulario heredado desde un proyecto independiente
» Creación de menús desde código
» Detectando el estado de finalización
» Crear un proceso de monitorización
» Comportamiento Modal de formularios
» Formularios dependientes y fijos en primer plano
» Dibujo con las clases Graphics y Pen
» Manipulación de los eventos de pintado en la clase Form
» Manipulando el grado de opacidad del formulario
» Integrando elementos. Un visualizador de gráficos
» Comparativa de ADO /ADO .NET
» Arquitectura de datos desconectados
» Una visión general de ADO .NET
» Espacios de nombres y clases en ADO .NET
» Empleo de Data Binding simple para navegar y editar datos
» Configurar por código las propiedades del DataGrid
Show more