Événements et gestionnaires d'événements

Mise à jour : novembre 2007

Vous pouvez comparer un projet Visual Studio à une série de procédures qui s'exécutent dans une séquence, mais en réalité, la plupart des programmes sont pilotés par des événements, c'est-à-dire que le déroulement de l'exécution dépend d'occurrences externes appelées événements.

Un événement est un signal qui informe l'application que quelque chose d'important s'est produit. Par exemple, lorsqu'un utilisateur clique sur un contrôle d'un formulaire, le formulaire peut déclencher un événement Click et appeler une procédure qui gère l'événement. Les événements séparent également les tâches pour communiquer. Supposons, par exemple, que votre application exécute une tâche de tri séparément de l'application principale. Si un utilisateur annule le tri, votre application peut envoyer un événement d'annulation demandant au processus de tri de s'interrompre.

Termes et concepts relatifs aux événements

Cette section décrit les termes et concepts utilisés avec les événements en Visual Basic.

Déclaration d'événements

Vous déclarez des événements dans le cadre de classes, structures, modules et interfaces à l'aide du mot clé Event, comme dans l'exemple suivant :

Event AnEvent(ByVal EventNumber As Integer)

Déclenchement d'événements

Un événement est comparable à un message annonçant que quelque chose d'important s'est produit. L'acte de diffusion du message est appelé déclenchement de l'événement. En Visual Basic, vous déclenchez des événements à l'aide de l'instruction RaiseEvent, comme dans l'exemple suivant :

RaiseEvent AnEvent(EventNumber)

Les événements doivent être déclenchés dans la portée de la classe, du module ou de la structure où ils sont déclarés. Par exemple, une classe dérivée ne peut pas déclencher d'événements hérités à partir d'une classe de base.

Émetteurs d'événements

Tout objet capable de déclencher un événement est un émetteur d'événements, également appelé source d'événements. Les formulaires, contrôles et objets définis par l'utilisateur sont des exemples d'émetteurs d'événements.

Gestionnaires d'événements

Les gestionnaires d'événements sont des procédures appelées lorsqu'un événement correspondant se produit. Vous pouvez utiliser n'importe quelle sous-routine valide avec une signature correspondante comme gestionnaire d'événements. Il vous est cependant impossible d'utiliser une fonction en tant que gestionnaire d'événements parce qu'une fonction ne peut retourner une valeur à la source des événements.

Visual Basic utilise pour les gestionnaires d'événements une convention d'affectation de noms standard qui associe le nom de l'émetteur de l'événement, un trait de soulignement et le nom de l'événement. Par exemple, l'événement Click d'un bouton appelé button1 aurait pour nom Sub button1_Click.

Remarque :

Nous vous recommandons, mais ce n'est pas obligatoire, d'utiliser cette convention d'affectation de noms lorsque vous définissez des gestionnaires d'événements pour vos propres événements ; vous pouvez utiliser n'importe quel nom de sous-routine valide.

Association d'événements aux gestionnaires d'événements

Avant de pouvoir utiliser un gestionnaire d'événements, 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 assurent 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 gérés par n'importe quelle sous-routine avec 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 restreinte à 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 vous permettent de connecter et déconnecter dynamiquement les événements par rapport à au moins un gestionnaire d'événements au moment de l'exécution et ne vous obligent pas à déclarer des variables d'objets à l'aide de WithEvents. Toutefois, des restrictions s'appliquent à l'utilisation de WithEvents. Pour plus d'informations, consultez WithEvents et la clause Handles.

Dans certains cas, par exemple dans celui d'événements associés à des formulaires ou contrôles, Visual Basic choisit automatiquement un gestionnaire d'événements vide et l'associe à un événement. Par exemple, lorsque vous double-cliquez sur un bouton de commande dans un formulaire en mode design, Visual Basic crée un gestionnaire d'événements vide et une variable WithEvents pour le bouton de commande, comme dans le code suivant :

Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
End Sub

Voir aussi

Tâches

Comment : écrire des gestionnaires d'événements

Concepts

AddHandler et RemoveHandler

WithEvents et la clause Handles

Référence

Handles

AddHandler, instruction