2010-01-20 5 views

ответ

29

Попробуйте следующие действия

Button b1 = CreateMyButton(); 
b1.Click += new EventHandler(this.MyButtonHandler); 
... 
void MyButtonHandler(object sender, EventArgs e) { 
    ... 
} 
+1

спасибо, но это действительно не соответствовало моим потребностям. Я попробовал поиск в Интернете на основе того, что вы мне дали, но я ничего не мог найти или понять. Вещь, у меня есть множество кнопок. И я хотел бы знать, какая кнопка нажата. – jello

+0

@jello, вы когда-нибудь находили решение решить, какую кнопку нажать? У меня есть аналогичная проблема прямо сейчас. – mdw7326

2

кажется, как это работает, в то время как добавление тега с каждым элементом массива

Button button = sender as Button; 

вы знаете о лучший путь?

3

Если вы хотите увидеть, какая кнопка была нажата, вы можете сделать следующее после создания и назначить кнопки. Учитывая, что вы создаете идентификаторы кнопок вручную:

protected void btn_click(object sender, EventArgs e) { 
    Button btn = (Button)sender // if you're sure that the sender is button, 
           // otherwise check if it is null 
    if(btn.ID == "blablabla") 
     // then do whatever you want 
} 

Вы также можете проверить их, указав каждому аргументу команду.

19

Используйте этот код, чтобы обрабатывать несколько кнопок выберите события:

private int counter=0; 

    private void CreateButton_Click(object sender, EventArgs e) 
    { 
     //Create new button. 
     Button button = new Button(); 

     //Set name for a button to recognize it later. 
     button.Name = "Butt"+counter; 

     // you can added other attribute here. 
     button.Text = "New"; 
     button.Location = new Point(70,70); 
     button.Size = new Size(100, 100); 

     // Increase counter for adding new button later. 
     counter++; 

     // add click event to the button. 
     button.Click += new EventHandler(NewButton_Click); 
    } 

    // In event method. 
    private void NewButton_Click(object sender, EventArgs e) 
    { 
     Button btn = (Button) sender; 

     for (int i = 0; i < counter; i++) 
     { 
      if (btn.Name == ("Butt" + i)) 
      { 
       // When find specific button do what do you want. 
       //Then exit from loop by break. 
       break; 
      } 
     } 
    } 
0

Что касается вашего комментария сказать, что вы хотели бы знать, какая кнопка была нажата, вы можете установить атрибут .tag для кнопки любой тип идентифицирующей строки, которую вы хотите, поскольку она создана и используется

private void MyButtonHandler(object sender, EventArgs e) 
    { 
     string buttonClicked = (sender as Button).Tag; 
    } 
+0

По крайней мере, это самый простой способ, о котором я могу думать. – TehSpowage