Comment gérer un événement de contrôle (Windows Forms .NET)

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és 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 actuellement votre application.

Gérer un événement - concepteur

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 le contrôle à modifier.

  2. Sélectionnez le contrôle .

  3. Remplacez le mode du volet Propriétés par É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 propriétés de Visual Studio affiché avec le mode événements activé et l’événement click.

  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 accède au 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 le code du gestionnaire qui se trouve dans le fichier code-behind du formulaire, il est toujours référencé par l’événement. Utilisez le volet Propriétés pour supprimer le gestionnaire d’un événement :

  1. Ouvrez le Concepteur visuel du formulaire contenant le contrôle à modifier.

  2. Sélectionnez le contrôle .

  3. Remplacez le mode du volet Propriétés par É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 propriétés de Visual Studio affiché avec le mode événements activé et l’événement click.

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

Gérer un événement - code

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 Button.Click gestionnaire d’événements un autre bouton. Lorsque Button1 est enfoncé. Le code déplace et dimensionne un nouveau bouton. L’événement du Click nouveau bouton est géré par la MyNewButton_Click méthode. Pour afficher le nouveau bouton, il est ajouté à la collection du Controls 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 à un formulaire avec visual Designer Visual Studio :

  1. Ajoutez un nouveau bouton au formulaire et nommez-le Button1.
  2. Remplacez le mode du volet Propriétés par Événements en appuyant sur le bouton d’é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 vide Button1_Click .
  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 illustrer 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 a changé 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 Handles mots clés 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 Handles mot clé pour vous et l’ajoute au gestionnaire d’événements. Toutefois, vous pouvez facilement le faire vous-même à n’importe quel gestionnaire d’événements et d’événements du contrôle, tant que la signature de la méthode de gestionnaire correspond à 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 différents Button.Click :

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