Share via


Événements et gestion des événements pour les utilisateurs de Visual Basic 6.0

Mise à jour : novembre 2007

Si vous connaissez bien les événements et la gestion des événements dans Visual Basic 6.0, le modèle d'événement dans Visual Basic 2008 pourra vous paraître déconcertant au départ, mais il est finalement plus simple et beaucoup plus puissant.

Différences conceptuelles

Dans Visual Basic 6.0, les événements sont liés à des objets spécifiques et possèdent leur propre code de gestion des événements. Par exemple, sur un formulaire comportant un bouton et un menu, chacun de ces éléments possède son propre événement Click ; vous devez écrire du code dans le gestionnaire d'événements pour chacun, même s'ils effectuent exactement la même fonction.

' Visual Basic 6.0 
Private Sub HelpButton_Click()
    HelpButton.Caption = "Help me!"
End Sub
Private Sub HelpMenu_Click()
    HelpMenu.Caption = "Help me!"
End Sub

Dans Visual Basic 2008, les événements sont liés à des gestionnaires d'événements au moyen de délégués pour vous permettre de créer un seul gestionnaire d'événements pour plusieurs objets.

Private Sub HelpButton_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles HelpButton.Click, HelpMenu.Click
    sender.Text = "Help me!"
End Sub

Dans l'exemple ci-dessus, notez que la déclaration de l'événement comporte une clause Handles qui définit quels événements seront gérés ; dans ce cas, ce sont les événements Click des objets HelpButton et HelpMenu. Les objets et événements ne doivent pas être obligatoirement du même type? Vous pouvez par exemple avoir un seul gestionnaire d'événements qui gère l'événement Click d'un bouton, l'événement DoubleClick d'une zone de texte et l'événement Tick d'un timer.

Notez également que la déclaration de l'événement contient deux paramètres : ByVal sender As Object et ByVal e As System.EventArgs. Le premier paramètre, sender, fournit une référence à l'objet qui a déclenché l'événement. Le deuxième paramètre, e, passe un objet spécifique à l'événement géré. En référençant les propriétés de l'objet (et parfois ses méthodes), vous pouvez obtenir des informations, telles que l'emplacement de la souris pour les événements de souris ou les données transférées pour les événements de glisser-déplacer.

Dans l'exemple suivant, le gestionnaire d'événements MouseDown utilise le paramètre sender pour déterminer le type d'objet qui a généré l'événement et si l'objet est un PictureBox, le paramètre e est utilisé pour déplacer une étiquette à l'emplacement où le clic a eu lieu. Pour dupliquer cet exemple, ajoutez deux contrôles PictureBox et un contrôle Label à un formulaire.

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown, _
PictureBox1.MouseDown, PictureBox2.MouseDown

    If TypeOf sender Is PictureBox Then
        Label1.Location = sender.Location + e.Location
    Else
        MsgBox("Please click a picture")
    End If
End Sub

En général, chaque événement produit un gestionnaire d'événements avec un type event-object pour le second paramètre. Quelques gestionnaires d'événements, tels que ceux des événements MouseDown et MouseUp, ont le même type d'objet (MouseEventArgs) pour leur deuxième paramètre. Dans ce cas, vous pouvez utiliser le même gestionnaire d'événements pour les deux événements.

Pour les événements qui passent différents types d'objets événement, vous devez créer des gestionnaires d'événements séparés. Par exemple, l'événement TextChanged d'un contrôle TextBox passe l'objet événement EventArgs générique et l'événement MouseDown passe l'objet événement MouseEventArgs plus spécialisé. L'objet MouseEventArgs contient des propriétés qui sont spécifiques aux événements de souris tels que Button, pour déterminer quel bouton de la souris a été actionné. Ces propriétés ne s'appliquent pas à un contrôle TextBox et provoqueraient une erreur si vous essayiez de les référencer.

En plus des différences conceptuelles relatives à la gestion des événements, les noms et comportements de certains événements pour plusieurs objets sont différents dans Visual Basic 2008. Pour plus d'informations, consultez Contrôles Windows Forms pour les utilisateurs de Visual Basic 6.0.

Voir aussi

Concepts

Vue d'ensemble des gestionnaires d'événements (Windows Forms)

Autres ressources

Création de gestionnaires d'événements dans les Windows Forms