web-dev-qa-db-fra.com

Comment puis-je abonner plusieurs boutons au même gestionnaire d'événements et agir en fonction du bouton sur lequel vous avez cliqué?

J'ai 6 boutons que je veux attacher au même gestionnaire. Comment puis-je faire ceci?

25
delete

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é.

25
Reed Copsey

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
}
38
hunter

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.

13
Igal Tabachnik

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.

4
AlexanderMP

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.

4
Itay Karo
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;
               }
}
2
Tokk

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

1
user6480540