Comment : ajouter un gestionnaire d'événements à l'aide de code
Mise à jour : novembre 2007
Cet exemple montre comment ajouter un gestionnaire d'événements à un élément à l'aide de code.
Si vous souhaitez ajouter un gestionnaire d'événements à un élément XAML, et que la page avec balise contenant l'élément a déjà été chargée, vous devez ajouter le gestionnaire à l'aide de code. Ou bien, si vous développez l'arborescence d'éléments pour une application uniquement à l'aide de code et que vous ne déclarez aucun élément à l'aide de XAML, vous pouvez appeler des méthodes spécifiques pour ajouter des gestionnaires d'événements à l'arborescence d'éléments construite.
Exemple
L'exemple suivant ajoute un nouveau Button à une page existante définie initialement dans XAML. Un fichier code-behind implémente une méthode de gestionnaire d'événements puis ajoute cette méthode sous forme de nouveau gestionnaire d'événements sur le Button.
L'exemple C# utilise l'opérateur += pour assigner un gestionnaire à un événement. Il s'agit du même opérateur utilisé pour assigner un gestionnaire dans le modèle de gestion des événements Common Language Runtime (CLR). Microsoft Visual Basic ne prend pas en charge cet opérateur comme méthode d'ajout de gestionnaires d'événements. Il requiert à la place l'une des deux techniques suivantes :
Utilisez la méthode AddHandler, associée à un opérateur AddressOf, pour référencer l'implémentation du gestionnaire d'événements.
Utilisez le mot clé Handles dans le cadre de la définition du gestionnaire d'événements. Cette technique n'est pas indiqué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
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
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!!";
}
Remarque : |
---|
L'ajout d'un gestionnaire d'événements dans la page XAML analysée initialement est beaucoup plus simple. Dans l'élément objet où vous souhaitez ajouter le gestionnaire d'événements, ajoutez un attribut correspondant 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 Vue d'ensemble du langage XAML ou Vue d'ensemble des événements routés. |
Pour l'exemple complet, consultez Ajout d'un gestionnaire d'événements, exemple.
Voir aussi
Tâches
Ajout d'un gestionnaire d'événements, exemple
Concepts
Vue d'ensemble des événements routés