Ответ 1
Попробуйте выполнить
Button b1 = CreateMyButton();
b1.Click += new EventHandler(this.MyButtonHandler);
...
void MyButtonHandler(object sender, EventArgs e) {
...
}
Я делаю приложение форм Windows, используя С#. Я добавляю кнопки и другие элементы управления программно во время выполнения. Я хотел бы знать, как обрабатывать эти события нажатием кнопок?
Попробуйте выполнить
Button b1 = CreateMyButton();
b1.Click += new EventHandler(this.MyButtonHandler);
...
void MyButtonHandler(object sender, EventArgs e) {
...
}
Используйте этот код для обработки нескольких событий нажатия кнопок:
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;
}
}
}
Если вы хотите увидеть, какая кнопка была нажата, вы можете сделать следующее после создания и назначения кнопок. Учитывая, что вы создаете идентификаторы кнопок вручную:
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
}
Вы также можете проверить их на предоставление аргумента команды каждой кнопке.
Посмотрите этот пример Как создать 5 кнопок и динамически назначать отдельные события кликов на С#
похоже, что это работает, добавляя тег с каждым элементом массива
Button button = sender as Button;
Вы знаете лучший способ?
Что касается вашего комментария, говорящего о том, что вы хотите узнать, какая кнопка была нажата, вы можете установить атрибут .Tag кнопки на любую идентификационную строку, которую хотите по мере ее создания, и использовать
private void MyButtonHandler(object sender, EventArgs e)
{
string buttonClicked = (sender as Button).Tag;
}