Comment : ajouter un gestionnaire d'événements à l'aide de code

Cet exemple montre comment ajouter un gestionnaire d’événements à un élément à l’aide du code.

Si vous souhaitez ajouter un gestionnaire d’événements à un élément XAML et la page de balisage qui contient l’élément a déjà été chargé, vous devez ajouter le gestionnaire à l’aide du code. Vous pouvez également appeler des méthodes spécifiques pour ajouter des gestionnaires d’événements à l’arborescence d’éléments à l’arborescence d’éléments construits à l’arborescence d’éléments construits.

Exemple

L’exemple suivant ajoute un nouveau Button à une page existante initialement définie en XAML. Un fichier code-behind implémente une méthode de gestionnaire d’événements, puis ajoute cette méthode en tant que nouveau gestionnaire d’événements sur le Button.

L’exemple C# utilise l’opérateur += pour affecter un gestionnaire à un événement. Il s’agit de l’opérateur utilisé pour affecter un gestionnaire dans le modèle de gestion des événements CLR (Common Language Runtime). Microsoft Visual Basic ne prend pas en charge cet opérateur comme moyen d’ajouter des gestionnaires d’événements. Elle nécessite plutôt l’une des deux techniques suivantes :

  • Utilisez la AddHandler méthode, avec un opérateur, pour référencer l’implémentation du gestionnaire d’événements AddressOf .

  • Utilisez la Handles mot clé dans le cadre de la définition du gestionnaire d’événements. Cette technique n’est pas présentée ici ; consultez Gestion des événements Visual Basic et WPF.

<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
public partial class RoutedEventAddRemoveHandler {
    void MakeButton(object sender, RoutedEventArgs e)
    {
        Button b2 = new Button();
        b2.Content = "New Button";
        // Associate event handler to the button. You can remove the event
        // handler using "-=" syntax rather than "+=".
        b2.Click  += new RoutedEventHandler(Onb2Click);
        root.Children.Insert(root.Children.Count, b2);
        DockPanel.SetDock(b2, Dock.Top);
        text1.Text = "Now click the second button...";
        b1.IsEnabled = false;
    }
    void Onb2Click(object sender, RoutedEventArgs e)
    {
        text1.Text = "New Button (b2) Was Clicked!!";
    }
Public Partial Class RoutedEventAddRemoveHandler
    Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Dim b2 As Button = New Button()
        b2.Content = "New Button"
        AddHandler b2.Click, AddressOf Onb2Click
        root.Children.Insert(root.Children.Count, b2)
        DockPanel.SetDock(b2, Dock.Top)
        text1.Text = "Now click the second button..."
        b1.IsEnabled = False
    End Sub
    Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        text1.Text = "New Button (b2) Was Clicked!!"
    End Sub

Remarque

L’ajout d’un gestionnaire d’événements dans la page XAML initialement analysée est beaucoup plus simple. Dans l’élément objet dans lequel vous souhaitez ajouter le gestionnaire d’événements, ajoutez un attribut qui correspond au nom de l’événement que vous souhaitez gérer. Spécifiez ensuite la valeur de cet attribut comme nom de la méthode de gestionnaire d’événements que vous avez définie dans le fichier code-behind de la page XAML. Pour plus d’informations, consultez XAML dans WPF ou Vue d’ensemble des événements routés.

Voir aussi