J'ai 6 boutons que je veux attacher au même gestionnaire. Comment puis-je faire ceci?
Lorsque vous vous abonnez à l'événement sur un bouton, il s'agit simplement d'un gestionnaire d'événements standard:
button1.Click += myEventHandler;
Vous pouvez utiliser le même code pour ajouter des gestionnaires pour chaque bouton:
button1.Click += myEventHandler;
button2.Click += myEventHandler;
button3.Click += myEventHandler;
button4.Click += myEventHandler;
button5.Click += myEventHandler;
button6.Click += myEventHandler;
Cela entraînera l'exécution de votre gestionnaire dans myEventHandler
lorsque l'un des boutons est cliqué.
Vous pouvez attacher le même événement à plusieurs boutons en liant la même méthode à chaque événement de clic de boutons
myButton1.Click += new MyButtonClick;
myButton2.Click += new MyButtonClick;
myButton3.Click += new MyButtonClick;
myButton4.Click += new MyButtonClick;
myButton5.Click += new MyButtonClick;
myButton6.Click += new MyButtonClick;
void MyButtonClick(object sender, EventArgs e)
{
Button button = sender as Button;
//here you can check which button was clicked by the sender
}
Connectez simplement les boutons au même événement:
myButton1.Click += Button_Click;
myButton2.Click += Button_Click;
myButton3.Click += Button_Click;
...
Et manipulez les boutons en conséquence:
private void Button_Click(object sender, EventArgs e)
{
string buttonText = ((Button)sender).Text;
switch (buttonText)
{
...
}
}
L'objet sender
contient la référence au bouton qui a provoqué l'événement Click. Vous pouvez le restituer à Button
et accéder à la propriété dont vous avez besoin pour distinguer le bouton réel.
Comment voir quel bouton a été enfoncé:
Utilisez le sender
Button myButton = (Button)sender;
sender
est un paramètre de type object
dans votre gestionnaire d'événements.
Au lieu de double-cliquer sur l'événement dans le concepteur, vous pouvez coller le nom du gestionnaire d'événements dans l'événement dans la grille de propriétés du concepteur.
myButton1.Click += new EventHandler(MyButtonClick);
myButton2.Click += new EventHandler(MyButtonClick);
myButton3.Click += new EventHandler(MyButtonClick);
myButton4.Click += new EventHandler(MyButtonClick);
myButton5.Click += new EventHandler(MyButtonClick);
myButton6.Click += new EventHandler(MyButtonClick);
public void MyButtonClick(object sender, MouseButtonEventArgs e)
{
switch ((sender as Button).Name)
{
case "button1":
//actions
break;
case "button2":
//actions
break;
default:
break;
}
}
Je ne suis pas un expert mais j'utilise ça et ça a l'air assez simple
<Button x:Name="Button1" Content="Button" Click="Button_Click"/>
<Button x:Name="Button2" Content="Button" Click="Button_Click"/>
Donnez simplement aux deux boutons le même événement de clic