Events - Visual Basic (2023)

  • Artículo
  • Tiempo de lectura: 7 minutos

Aunque un proyecto se puede visualizar como una serie de procedimientos que se ejecutan en secuencia, en realidad, la mayoría de los programas se basan en eventos, lo que significa que el flujo de ejecución viene determinado por elementos externos denominados eventos.

Un evento es una señal que comunica a una aplicación que ha sucedido algo importante. Por ejemplo, cuando un usuario hace clic en un control en un formulario, el formulario puede provocar un evento Click y llamar a un procedimiento que controla el evento. Los eventos también permiten que las tareas independientes se comuniquen. Por ejemplo, supongamos que la aplicación realiza una tarea de ordenación de manera independiente a la aplicación principal. Si un usuario cancela la ordenación, la aplicación puede enviar un evento de cancelación que indica al proceso de ordenación que se detenga.

Conceptos y términos de eventos

En esta sección se describen los términos y conceptos que se utilizan con eventos en VisualBasic.

Declarar eventos

Puede declarar eventos dentro de clases, estructuras, módulos e interfaces con la palabra clave Event, como en el ejemplo siguiente:

(Video) Visual Basic Tutorial - 49 - Events

Event AnEvent(ByVal EventNumber As Integer)

Provocar eventos

Un evento es como un mensaje que anuncia que ha sucedido algo importante. La acción de difundir el mensaje se denomina generar el evento. En VisualBasic, los eventos se generan con la instrucción RaiseEvent, como en el siguiente ejemplo:

RaiseEvent AnEvent(EventNumber)

Los eventos deben generarse dentro del ámbito de la clase, del módulo o de la estructura donde se declaran. Por ejemplo, una clase derivada no puede generar eventos heredados de una clase base.

Remitentes de eventos

Cualquier objeto capaz de generar un evento es un remitente del evento, lo que también se conoce como origen del evento. Los formularios, controles y objetos definidos por el usuario son ejemplos de remitentes de eventos.

Controladores de eventos

Los controladores de eventos son procedimientos que se invocan cuando se produce un evento correspondiente. Puede utilizar cualquier subrutina válida con una firma coincidente como un controlador de eventos. Sin embargo, no se puede utilizar una función como un controlador de eventos, porque no devolverá un valor al origen del evento.

VisualBasic utiliza una convención de nomenclatura estándar en los controladores de eventos que combina el nombre del remitente del evento, un guion bajo y el nombre del evento. Por ejemplo, el evento Click de un botón con nombre button1 se denominaría Sub button1_Click.

Nota

Se recomienda utilizar esta convención de nomenclatura al definir controladores de eventos para sus propios eventos, pero no es necesario; puede utilizar cualquier nombre de subrutina válido.

(Video) Working with Events - Visual Basic

Asociación de eventos con controladores de eventos

Antes de poder utilizar un controlador de eventos, primero debe asociarlo con un evento mediante la utilización de la instrucción Handles o AddHandler.

WithEvents y la cláusula Handles

La instrucción WithEvents y la cláusula Handles proporcionan una forma declarativa de especificar controladores de eventos. Un evento generado por un objeto declarado con la palabra clave WithEvents puede controlarse mediante cualquier procedimiento con una instrucción Handles para ese evento, tal como se muestra en el ejemplo siguiente:

' Declare a WithEvents variable.Dim WithEvents EClass As New EventClass' Call the method that raises the object's events.Sub TestEvents() EClass.RaiseEvents()End Sub' Declare an event handler that handles multiple events.Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent MsgBox("Received Event.")End SubClass EventClass Public Event XEvent() Public Event YEvent() ' RaiseEvents raises both events. Sub RaiseEvents() RaiseEvent XEvent() RaiseEvent YEvent() End SubEnd Class

La instrucción WithEvents y la cláusula Handles suelen ser la mejor opción para controladores de eventos, porque la sintaxis declarativa que utilizan hace que el control de eventos sea más fácil de codificar, leer y depurar. Sin embargo, tenga en cuenta las siguientes limitaciones en el uso de variables WithEvents:

  • No puede usar una variable WithEvents como una variable de objeto. Es decir, no puede declararla como Object: debe especificar el nombre de clase al declarar la variable.

    (Video) Events in Visual Basic

  • Como los eventos compartidos no están enlazados a las instancias de clase, WithEvents no se puede usar para controlar los eventos compartidos mediante declaración. De forma similar, no puede usar WithEvents o Handles para controlar eventos desde Structure. En ambos casos, puede usar la instrucción AddHandler para controlar dichos eventos.

  • No puede crear matrices de las variables WithEvents.

Las variables WithEvents permiten que un único controlador de eventos controle uno o varios tipos de eventos, o bien que uno o varios controladores de eventos controlen el mismo tipo de eventos.

Aunque la cláusula Handles es la forma estándar de asociar un evento con un controlador de eventos, tiene la limitación de que solo puede asociar eventos con controladores de eventos en tiempo de compilación.

En algunos casos, como con eventos asociados con formularios o controles, VisualBasic conecta automáticamente un controlador de eventos vacío y lo asocia con un evento. Por ejemplo, si hace doble clic en un botón de comando de un formulario en modo de diseño, VisualBasic crea un controlador de eventos vacío y una variable WithEvents para el botón de comando, como en el siguiente código:

Friend WithEvents Button1 As System.Windows.Forms.ButtonProtected Sub Button1_Click() Handles Button1.ClickEnd Sub

AddHandler y RemoveHandler

La instrucción AddHandler es similar a la cláusula Handles por el hecho de que ambas permiten especificar un controlador de eventos. Sin embargo, AddHandler, que se utiliza con RemoveHandler, aporta más flexibilidad que la cláusula Handles, ya que permite agregar, eliminar y cambiar de forma dinámica el controlador de eventos asociado con un evento. Si desea controlar eventos compartidos o eventos de una estructura, debe utilizar AddHandler.

(Video) Tutorial 3: Working With Events and Panels in Visual Basic

AddHandler adopta dos argumentos: el nombre de un evento de un remitente de eventos como un control y una expresión que evalúa a un delegado. No es necesario especificar explícitamente la clase delegada al utilizar AddHandler, puesto que la instrucción AddressOf siempre devuelve una referencia al delegado. En el ejemplo siguiente se asocia un controlador de eventos a un evento generado por un objeto:

AddHandler Obj.XEvent, AddressOf Me.XEventHandler

RemoveHandler, que desconecta un evento de un controlador de eventos, utiliza la misma sintaxis que AddHandler. Por ejemplo:

RemoveHandler Obj.XEvent, AddressOf Me.XEventHandler

En el ejemplo siguiente, un controlador de eventos está asociado a un evento, y se genera el evento. El controlador de eventos detecta el evento y muestra un mensaje.

A continuación, se quita el primer controlador de eventos y se asocia otro diferente al evento. Cuando se vuelve a generar el evento, se muestra un mensaje diferente.

Por último, se quita el segundo controlador de eventos, y el evento se genera por tercera vez. Dado que ya no hay ningún controlador de eventos asociado al evento, no se realiza ninguna acción.

Module Module1 Sub Main() Dim c1 As New Class1 ' Associate an event handler with an event. AddHandler c1.AnEvent, AddressOf EventHandler1 ' Call a method to raise the event. c1.CauseTheEvent() ' Stop handling the event. RemoveHandler c1.AnEvent, AddressOf EventHandler1 ' Now associate a different event handler with the event. AddHandler c1.AnEvent, AddressOf EventHandler2 ' Call a method to raise the event. c1.CauseTheEvent() ' Stop handling the event. RemoveHandler c1.AnEvent, AddressOf EventHandler2 ' This event will not be handled. c1.CauseTheEvent() End Sub Sub EventHandler1() ' Handle the event. MsgBox("EventHandler1 caught event.") End Sub Sub EventHandler2() ' Handle the event. MsgBox("EventHandler2 caught event.") End Sub Public Class Class1 ' Declare an event. Public Event AnEvent() Sub CauseTheEvent() ' Raise an event. RaiseEvent AnEvent() End Sub End ClassEnd Module

Control de eventos heredados de una clase base

Clases derivadas: clases que heredan características de una clase base, que pueden controlar eventos generados por su clase base con la instrucción Handles MyBase.

(Video) VB.NET Tutorial - Create and Handle Custom Events (Visual Basic .NET)

Para controlar eventos de una clase base

  • Declare un controlador de eventos en la clase derivada; para ello, agregue una instrucción Handles MyBase.eventname a la línea de declaración del procedimiento del controlador de eventos, donde eventname es el nombre del evento de la clase base que se va a controlar. Por ejemplo:

    Public Class BaseClass Public Event BaseEvent(ByVal i As Integer) ' Place methods and properties here.End ClassPublic Class DerivedClass Inherits BaseClass Sub EventHandler(ByVal x As Integer) Handles MyBase.BaseEvent ' Place code to handle events from BaseClass here. End SubEnd Class
TitleDescripción
Tutorial: Declarar y generar eventosProporciona una descripción detallada de cómo declarar y generar eventos para una clase.
Tutorial: Controlar eventosMuestra cómo escribir un procedimiento de controlador de eventos.
Procedimiento para declarar eventos personalizados para evitar bloqueosMuestra cómo definir un evento personalizado que permite invocar a sus controladores de eventos de forma asincrónica.
Cómo: Declarar eventos personalizados para conservar memoriaMuestra cómo definir un evento personalizado que utiliza la memoria solo cuando se controla el evento.
Solucionar problemas de controladores de eventos heredados en Visual BasicEnumera los problemas habituales que se producen con los controladores de eventos en componentes heredados.
EventosProporciona una descripción general del modelo de eventos de .NET Framework.
Crear controladores de eventos en Windows FormsDescribe cómo trabajar con eventos asociados a objetos de Windows Forms.
DelegadosProporciona información general sobre delegados en Visual Basic.

FAQs

What types of events are there in Visual Basic? ›

Events are basically a user action like key press, clicks, mouse movements, etc., or some occurrence like system generated notifications. Applications need to respond to events when they occur. Clicking on a button, or entering some text in a text box, or clicking on a menu item, all are examples of events.

What are event handlers and events in Visual Basic? ›

An event is an action or occurrence — such as a mouse click or a credit limit exceeded — that is recognized by some program component, and for which you can write code to respond. An event handler is the code you write to respond to an event. An event handler in Visual Basic is a Sub procedure.

What is the difference between events and methods in VB? ›

Methods cause an object to do something. Events are what happens when an object does something. Every object, such as a form or control, has a set of properties that describe it.

How do you declare an event in VB? ›

To declare an event for the Widget class

You can declare event arguments just as you do arguments of procedures, with the following exceptions: Events cannot have Optional or ParamArray arguments, and events do not have return values.

What are the 3 types of events? ›

What are the classifications of event types? Event types can be separated into corporate, private, or charity. Corporate events focus on businesses and customers, whereas private events are more recreational and charity events are for philanthropy.

What are visual events? ›

-Visual events denote the complex interactions that take place between the viewer and the viewed.

What is event and event handler? ›

In programming, an event handler is a callback routine that operates asynchronously once an event takes place. It dictates the action that follows the event. The programmer writes a code for this action to take place. An event is an action that takes place when a user interacts with a program.

How many events are there in VB? ›

The events in a Visual Basic.Net program are of two types: user generated events and system generated events. The user-generated events occur when the user actions key press, clicks, mouse movements, etc. are happening. System generated events are the notifications in the computer.

Videos

1. Using the Event Handler to Handle Multiple Click Events Visual Basic Tutorial
(Matteo Di Muro)
2. VB.NET Programming. Intermediate Lesson 1. Event Handling
(Computer Science)
3. Visual Basic #24 - Events, sender and e
(SpeedTutorialz)
4. Events - Visual Basic Programming (VB.NET & VBScript)
(Sonar Systems)
5. Visual Basic Tutorial: Events & Properties
(Computer Learning Zone)
6. Visual Basic 2010 Express Tutorial 2 - Events
(SchoolFreeware)
Top Articles
Latest Posts
Article information

Author: Allyn Kozey

Last Updated: 03/07/2023

Views: 6284

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Allyn Kozey

Birthday: 1993-12-21

Address: Suite 454 40343 Larson Union, Port Melia, TX 16164

Phone: +2456904400762

Job: Investor Administrator

Hobby: Sketching, Puzzles, Pet, Mountaineering, Skydiving, Dowsing, Sports

Introduction: My name is Allyn Kozey, I am a outstanding, colorful, adventurous, encouraging, zealous, tender, helpful person who loves writing and wants to share my knowledge and understanding with you.