Comment créer 5 boutons et affecter des événements de clic individuels de manière dynamic?

J’ai besoin de créer 5 boutons de manière dynamic sur le formulaire Windows et chaque bouton doit répondre à l’événement click. Je l’ai essayé mais tous les boutons répondent au même événement.

Nick parle de vos deux options (vous devriez pouvoir exécuter ce code et voir les deux options):

public Form1() { InitializeComponent(); for (int i = 0; i < 5; i++) { Button button = new Button(); button.Location = new Point(20, 30 * i + 10); switch (i) { case 0: button.Click += new EventHandler(ButtonClick); break; case 1: button.Click += new EventHandler(ButtonClick2); break; //... } this.Controls.Add(button); } for (int i = 0; i < 5; i++) { Button button = new Button(); button.Location = new Point(160, 30 * i + 10); button.Click += new EventHandler(ButtonClickOneEvent); button.Tag = i; this.Controls.Add(button); } } void ButtonClick(object sender, EventArgs e) { // First Button Clicked } void ButtonClick2(object sender, EventArgs e) { // Second Button Clicked } void ButtonClickOneEvent(object sender, EventArgs e) { Button button = sender as Button; if (button != null) { // now you know the button that was clicked switch ((int)button.Tag) { case 0: // First Button Clicked break; case 1: // Second Button Clicked break; // ... } } } 

Je suppose que vous êtes au courant et faites quelque chose comme ça?

 Button newButton = new Button(); newButton.Click += new EventHandler(newButton_Clicked); 

Vous enregistrez la même méthode pour tous les boutons. Vous aurez besoin de méthodes individuelles pour chaque bouton. Vous pouvez également affecter à chaque bouton une propriété d’identification différente et, dans votre gestionnaire, vérifier quel bouton était l’expéditeur.

De là, vous pouvez prendre les mesures appropriées.

Devinez ce que vous auriez pu essayer: Oui, tous les boutons déclenchent leurs événements selon la même méthode, mais le paramètre sender de votre méthode de rappel contient une référence au bouton qui a réellement causé l’événement en question.

 button b =new button (); b.text = " enter text"; b.click =+(then press Tab using key board)