Идентификатор кнопки как обработчик события - PullRequest
0 голосов
/ 11 января 2011

Я создаю 7 кнопок на лету

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

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    Console.WriteLine(b.Text);
}

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

спасибо

Ответы [ 4 ]

3 голосов
/ 11 января 2011

Поместите идентификатор в свойство Tag на кнопку при их создании, а затем проверьте идентификатор в обработчике событий.

Button button = new Button();
button.Tag = 1;

...

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    switch ((int)b.Tag)
    {
        ...
    }

}
3 голосов
/ 11 января 2011

Вы можете использовать свойства Name или Tag.

1 голос
/ 11 января 2011

Во-первых: плохая практика обрабатывать несколько кликов в одном событии с помощью переключателя.Но, однако, решение будет таким:

Создайте собственный элемент управления, который наследует кнопку, и объявите свой идентификатор как свойство.Таким образом, вы можете получить к нему доступ через:

MyButton b = (MyButton)sender;

switch(b.ID) { 
    //Code goes here 
}
0 голосов
/ 11 января 2011

Если каждая добавляемая кнопка имеет уникальный идентификатор, почему бы просто не использовать свойство идентификатора кнопки?

Button button = new Button();
button.ID= "Button1";

//...

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    switch(button.ID)
    {
        case "Button1":
          //...
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...