Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create 5 buttons and assign individual click events dynamically? [closed]

I need to create 5 buttons dynamically on windows form and each button should respond to click event. I tried it but all buttons are responding to same event.

like image 305
Raj Avatar asked Sep 16 '09 17:09

Raj


2 Answers

This is what Nick is talking about are your two options (You should be able to run this code and see both 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;
           // ...
        }
     }
  }
like image 181
SwDevMan81 Avatar answered Oct 12 '22 23:10

SwDevMan81


I assume you're in a loop and do something like this?

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

You're registering the same method for all buttons. You'll need individual methods for each button. Alternatively, you can assign each button a different identifying property and in your handler, check to see which button was the sender.

From there you can take appropriate action.

like image 45
Nick Avatar answered Oct 13 '22 00:10

Nick