Exporter (0) Imprimer
Développer tout
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Remplacement des gestionnaires d'événements avec Visual Basic .NET

Visual Studio .NET 2003

Matthew A. Stoecker
L'équipe Visual Studio
Microsoft Corporation

Résumé : cet article explique comment remplacer les gestionnaires d'événements lorsque vous programmez en Visual Basic® .NET. L'utilisation de la clause Handles sera également abordée.

Sommaire

Introduction
Conditions requises
Gestionnaires d'événements hérités
Gestionnaires d'événements hérités dans les composants
Conclusion

Introduction

Lorsque vous héritez d'un contrôle ou d'un composant, vous créez un nouveau contrôle ou un nouveau composant qui regroupe toutes les fonctionnalités de sa classe de base. Tous les gestionnaires d'événements définis par la classe de base seront inclus dans le composant hérité. Cet article examine les questions relatives aux gestionnaires d'événements hérités ainsi que leurs implications dans le développement d'applications avec Visual Basic .NET.

Conditions requises

  • Vous devez bien connaître la notion d'héritage et la programmation orientée objet. Pour plus d'informations, reportez-vous à l'article Polymorphism in Components leave-msdn france Site en anglais.

Gestionnaires d'événements hérités

Lorsqu'un composant est hérité, tous ses membres sont intégrés à la nouvelle classe. Les gestionnaires d'événements sont des méthodes exécutées en réponse à certains événements que le composant reçoit et elles sont héritées comme les autres membres du composant. L'exemple ci-après illustre un gestionnaire d'événements classique :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e as _
 System.EventArgs) Handles Button1.Click
 Static Counter as Integer = 0
 Counter += 1
 MessageBox.Show (" Un utilisateur a cliqué sur ce bouton " & _
 Counter.ToString() & " fois.")
End Sub

La méthode ci-dessus est exécutée chaque fois que l'événement Button1.Click est déclenché. La clause Handles à la fin de la déclaration de méthode associe la méthode à l'événement. Cette structure est typique des gestionnaires d'événements dans les composants.

Pour permettre le remplacement de cette méthode dans une classe héritée, vous devez ajouter le mot clé Overridable et modifier le niveau d'accès à Protected, Protected Friend ou Public. L'exemple ci-après illustre un gestionnaire d'événements qui peut être remplacé :

Protected Overridable Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e as System.EventArgs) Handles Button1.Click
 Static Counter as Integer = 0
 Counter += 1
 MessageBox.Show (" Un utilisateur a cliqué sur ce bouton " & _
 Counter.ToString() & " fois.")
End Sub

Gestionnaires d'événements hérités dans les composants

Le fait de remplacer un gestionnaire d'événements hérité équivaut à remplacer n'importe quelle autre méthode héritée, à une différence près toutefois : lorsque vous remplacez un gestionnaire d'événements hérité, vous devez supprimer la clause Handles.

Pour remplacer une méthode d'un gestionnaire d'événements hérité

  • Ajoutez le mot clé Overrides à votre déclaration de méthode.
    Remarque   Il est conseillé de ne pas ajouter de clause Handles à la méthode. Le gestionnaire d'événements est déjà associé à l'événement de la classe de base et cette association est transmise à la classe qui en hérite. En d'autres termes, la méthode sera exécutée lorsque l'événement sera déclenché et elle ne requiert pas de clause Handles supplémentaire.

L'exemple ci-après illustre le remplacement du gestionnaire d'événements de l'exemple précédent :

Protected Overrides Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e as System.EventArgs)
 Static Counter as Integer = 0
 Counter += 1
 MessageBox.Show (" Un utilisateur a cliqué sur ce bouton hérité " & _
 Counter.ToString() & " fois.")
End Sub

Pourquoi la clause Handles est inutile

La clause Handles n'est plus associée à la méthode. Il ne s'agit pas d'une erreur, mais bien d'un aspect spécifique du mode de traitement des événements par le .NET Framework. Le gestionnaire d'événements est déjà associé à l'événement de la classe de base et cette association est transmise à la classe qui en hérite. En d'autres termes, la méthode sera exécutée lorsque l'événement sera déclenché et elle ne requiert pas de clause Handles supplémentaire. L'ajout d'une clause Handles supplémentaire, comme ci-dessous, a pour effet de créer une nouvelle association à l'événement et de provoquer l'exécution de la méthode deux fois par événement.

' INCORRECT
Protected Overrides Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e as System.EventArgs) Handles Button1.Click
 Static Counter as Integer = 0
 ' Cette variable sera incrémentée deux fois à chaque clic sur 
 ' ce bouton.
 Counter += 1
 ' Le message apparaîtra deux fois lorsqu'un utilisateur
 ' cliquera sur le bouton
 ' et des informations inexactes seront affichées.
 MessageBox.Show (" Un utilisateur a cliqué sur ce bouton hérité " & _
 Counter.ToString() & " fois.")
End Sub

Conclusion

Le remplacement des gestionnaires d'événements peut être à l'origine de problèmes non intuitifs et provoquer des bogues difficiles à détecter. Il est très important de définir les associations convenables avec vos gestionnaires d'événements. Soyez vigilant et prenez en considération les associations d'événements déjà existantes.



Dernière mise à jour le jeudi 23 mai 2002



Pour en savoir plus
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft. Tous droits réservés.