¿Cómo creo 5 botones y asigno eventos click individuales dinámicamente?

Necesito crear 5 botones dinámicamente en el formulario de Windows y cada botón debería responder al evento de clic. Lo intenté pero todos los botones están respondiendo al mismo evento.

De esto es de lo que Nick está hablando son tus dos opciones (deberías poder ejecutar este código y ver ambas opciones):

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; // ... } } } 

Supongo que estás en un circuito y haces algo como esto.

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

Estás registrando el mismo método para todos los botones. Necesitará métodos individuales para cada botón. Alternativamente, puede asignar a cada botón una propiedad de identificación diferente y en su controlador, verifique qué botón fue el remitente.

Desde allí puedes tomar las medidas apropiadas.

Adivinando lo que podría haber intentado: Sí, todos los botones disparan sus eventos al mismo método, pero el parámetro sender de su método de callback contiene una referencia al botón que realmente causó el evento específico.

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