Les événements sont modélisés sous la forme d'attributs ayant le stéréotype <<Event>>, et avec une ou deux opérations liées représentant les gestionnaires Add et/ou Remove.
Vous déclarez les événements au sein de classes, structures, modules et interfaces grâce au mot clé Event, comme dans l'exemple suivant :
Event AnEvent(ByVal EventNumber As Integer)
Un événement est comme un message qui annonce que quelque chose d'important s'est produit. Le fait de diffuser ce message est appelé déclenchement de l'événement.
Les événements doivent être déclenchés dans la portée pour laquelle ils ont été déclarés. Par exemple, une classe dérivée ne peut pas déclencher des événements hérités d'une classe bean.
Un objet capable de déclencher un événement est un émetteur d'événements, on peut également rencontrer le terme source d'événements. Les formulaires, contrôles et objets définis par l'utilisateur peuvent être des émetteurs d'événements.
Les gestionnaires d'événements sont des procédures qui sont appelées dès lors que l'événement correspondant se produit. Vous pouvez utiliser n'importe quelle sous-routine valide avec une signature correspondante comme gestionnaire d'événements. Il n'est toutefois pas possible d'utiliser une fonction comme gestionnaire d'événements car une fonction ne peut retourner une valeur à la source des événements.
Visual Basic utilise une convention de dénomination standard pour les gestionnaires d'événements qui combine le nom de l'émetteur de l'événement, un tiret bas et le nom de l'événement. Par exemple, l'événement clic d'un bouton nommé button1 s'appellera Sub button1_Click. Il est conseillé de vous conformer à cette convention lorsque vous définissez des gestionnaires d'événement pour vos propres événements, bien que cela ne soit pas obligatoire. Vous pouvez utiliser n'importe quel nom de sous-routine valide.
Avant qu'un gestionnaire d'événements puisse être utilisé, vous devez au préalable l'associer à un événement à l'aide de l'instruction Handles ou AddHandler.
L'instruction WithEvents et la clause Handles fournissent une méthode déclarative de spécification des gestionnaires d'événements. Les événements déclenchés par un objet déclaré par WithEvents peuvent être traités par n'importe quelle sous-routine avec au moyen d'une clause Handles qui nomme ces événements. Même si la clause Handles constitue la méthode standard d'association d'un événement à un gestionnaire d'événements, son action est limitée à l'association d'événements aux gestionnaires d'événements au moment de la compilation.
Les instructions AddHandler et RemoveHandler sont plus souples à utiliser que la clause Handles. Elles permettent de connecter et déconnecter de façon dynamique les événements par rapport à au moins un gestionnaire d'événements au moment de l'exécution, et elles ne vous obligent pas à déclarer des variables d'objets à l'aide de WithEvents. L'utilisation de WithEvents fait l'objet de restrictions.