2009-09-16 6 views

Répondre

33

C'est ce que Nick parle sont vos deux options (vous devriez être en mesure d'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; 
      // ... 
     } 
    } 
    } 
+1

Tout de suite, je suis juste un peu plus paresseux que vous êtes! – Nick

+0

ces boutons répondront aux événements de clic, comme quand je clique sur le bouton 1, le message devrait afficher "Bouton 1 cliqué", en cliquant sur le bouton 2 il devrait montrer "Bouton 2 cliqué". et ainsi de suite ... –

+1

Ils le feront certainement, allez-y et testez-le en mettant des points d'arrêt ou en ajoutant MessageBox.Show ("Ajouter mes commentaires ici"); pour le voir fonctionner. – SwDevMan81

3

Deviner ce que vous avez peut-être essayé: Oui, tous les boutons transmettent leurs événements à 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 provoqué l'événement spécifique.

8

Je suppose que vous êtes dans une boucle et que vous 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.

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

Et comment cela résout le problème? – Moumit

Questions connexes