Partager via


Comment gérer un événement de contrôle

Les événements pour les contrôles (et pour les formulaires) sont généralement définis par le biais du Concepteur visuel Visual Studio pour Windows Forms. La définition d’un événement par le biais du Concepteur visuel est appelée gestion d’un événement au moment du design. Vous pouvez également gérer dynamiquement les événements dans le code, appelé gestion des événements au moment de l’exécution. Un événement créé au moment de l’exécution vous permet de connecter dynamiquement des gestionnaires d’événements en fonction de ce que fait votre application.

Gérer un événement en phase de conception

Dans Visual Studio, utilisez le Concepteur visuel pour gérer les gestionnaires pour les événements de contrôle. Le Concepteur visuel génère le code du gestionnaire et l’ajoute à l’événement pour vous.

Définir le gestionnaire

Utilisez le volet propriétés pour ajouter ou définir le gestionnaire d’un événement :

  1. Ouvrez le Concepteur visuel du formulaire contenant l'élément de contrôle à modifier.

  2. Sélectionnez le contrôle.

  3. Modifiez le mode de volet Propriétés en Événements en appuyant sur le bouton Événements ().

  4. Recherchez l’événement auquel vous souhaitez ajouter un gestionnaire, par exemple, l’événement Click :

    volet des propriétés de Visual Studio affiché avec le mode événements activé et l’événement de clic.

  5. Effectuez l’une des opérations suivantes :

    • Double-cliquez sur l’événement pour générer un nouveau gestionnaire, il est vide si aucun gestionnaire n’est affecté. S’il n’est pas vide, cette action ouvre le code du formulaire et navigue vers le gestionnaire existant.

    • Utilisez la zone de sélection () pour choisir un gestionnaire existant.

      La zone de sélection répertorie toutes les méthodes qui ont une signature de méthode compatible pour le gestionnaire d’événements.

Effacer le gestionnaire

Pour supprimer un gestionnaire d’événements, vous ne pouvez pas simplement supprimer du code de gestionnaire qui se trouve dans le fichier code-behind du formulaire, il est toujours référencé par le concepteur. Utilisez le volet propriétés pour supprimer le gestionnaire d’un événement :

  1. Ouvrez le Concepteur visuel du formulaire contenant l'élément de contrôle à modifier.

  2. Sélectionnez le contrôle.

  3. Modifiez le mode de volet Propriétés en Événements en appuyant sur le bouton Événements ().

  4. Recherchez l’événement contenant le gestionnaire que vous souhaitez supprimer, par exemple, l’événement Click :

    volet des propriétés de Visual Studio affiché avec le mode événements activé et l’événement de clic.

  5. Cliquez avec le bouton droit sur l’événement et choisissez Réinitialiser.

Gérer un événement au moment de l’exécution

Vous ajoutez généralement des gestionnaires d’événements aux contrôles au moment du design via le Concepteur visuel. Toutefois, vous pouvez créer des contrôles au moment de l’exécution, ce qui vous oblige à ajouter des gestionnaires d’événements dans le code. L’ajout de gestionnaires dans le code vous donne également la possibilité d’ajouter plusieurs gestionnaires au même événement.

Ajouter un gestionnaire

L’exemple suivant montre comment créer un contrôle et ajouter un gestionnaire d’événements. Ce contrôle est créé dans le gestionnaire d’événements Button.Click pour un bouton différent. Lorsque Button1 est enfoncé. Le code déplace et dimensionne un nouveau bouton. L’événement Click du nouveau bouton est géré par la méthode MyNewButton_Click. Pour afficher le nouveau bouton, il est ajouté à la collection Controls du formulaire. Il existe également du code pour supprimer le gestionnaire de l’événement Button1.Click, ce qui est décrit dans la section Supprimer le gestionnaire.

private void button1_Click(object sender, EventArgs e)
{
    // Create and add the button
    Button myNewButton = new()
    {
        Location = new Point(10, 10),
        Size = new Size(120, 25),
        Text = "Do work"
    };

    // Handle the Click event for the new button
    myNewButton.Click += MyNewButton_Click;
    this.Controls.Add(myNewButton);

    // Remove this button handler so the user cannot do this twice
    button1.Click -= button1_Click;
}

private void MyNewButton_Click(object sender, EventArgs e)
{
    
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Create and add the button
    Dim myNewButton As New Button() With {.Location = New Point(10, 10),
                                          .Size = New Size(120, 25),
                                          .Text = "Do work"}

    'Handle the Click event for the new button
    AddHandler myNewButton.Click, AddressOf MyNewButton_Click
    Me.Controls.Add(myNewButton)

    'Remove this button handler so the user cannot do this twice
    RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub

Private Sub MyNewButton_Click(sender As Object, e As EventArgs)

End Sub

Pour exécuter ce code, procédez comme suit sur un formulaire à l'aide du Concepteur Visuel de Visual Studio :

  1. Ajoutez un nouveau bouton au formulaire et nommez-le Button1.
  2. Modifiez le mode du volet Propriétés en Événements en appuyant sur le bouton Événement ().
  3. Double-cliquez sur l’événement Click pour générer un gestionnaire. Cette action ouvre la fenêtre de code et génère une méthode Button1_Click vide.
  4. Remplacez le code de méthode par le code précédent ci-dessus.

Pour plus d’informations sur les événements C#, consultez Événements (C#) Pour plus d’informations sur les événements Visual Basic, consultez Événements (Visual Basic)

Supprimer le gestionnaire

La section Ajouter un gestionnaire a utilisé du code pour faire la démonstration de l’ajout d’un gestionnaire. Ce code contenait également un appel pour supprimer un gestionnaire :

button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click

Cette syntaxe peut être utilisée pour supprimer n’importe quel gestionnaire d’événements de n’importe quel événement.

Pour plus d’informations sur les événements C#, consultez Événements (C#) Pour plus d’informations sur les événements Visual Basic, consultez Événements (Visual Basic)

Comment utiliser plusieurs événements avec le même gestionnaire

Avec le volet Propriétés de Visual Studio Visual Designer, vous pouvez sélectionner le même gestionnaire déjà utilisé par un autre événement. Suivez les instructions de la section Définir le gestionnaire pour sélectionner un gestionnaire existant au lieu de en créer un.

En C#, le gestionnaire est attaché à l’événement d’un contrôle dans le code du concepteur du formulaire, qui peut être modifié par le biais du Concepteur visuel. Pour plus d’informations sur les événements C#, consultez Événements (C#)

Visual Basic

Dans Visual Basic, le gestionnaire est attaché à l’événement d’un contrôle dans le fichier code-behind du formulaire, où le code du gestionnaire d’événements est déclaré. Plusieurs mots clés Handles peuvent être ajoutés au code du gestionnaire d’événements pour l’utiliser avec plusieurs événements. Le Concepteur visuel génère le mot clé Handles pour vous et l’ajoute au gestionnaire d’événements. Toutefois, vous pouvez facilement le faire vous-même pour l’événement et le gestionnaire d’événements d'un contrôle, tant que la signature de la méthode du gestionnaire correspond à celle de l’événement. Pour plus d’informations sur les événements Visual Basic, consultez Événements (Visual Basic)

Ce code montre comment la même méthode peut être utilisée comme gestionnaire pour deux événements de Button.Click différents :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
    'Do some work to handle the events
End Sub

Voir aussi