按钮id作为事件处理程序

时间:2011-01-11 14:01:06

标签: c# button webforms

我正在创建7个按钮

当我创建按钮时,我试图拥有一个事件处理程序,而不是通过交换机处理一个方法中的所有点击。理想情况下,我希望传递一个带有按钮的id,该按钮指示被点击的内容,与此

的解决方案相对
void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    Console.WriteLine(b.Text);
}

因为使用此事件处理程序的所有按钮都具有相同的文本。我有一个与按钮相关联的唯一ID,但不知道如何发送它们

感谢

4 个答案:

答案 0 :(得分:3)

您可以使用NameTag属性。

答案 1 :(得分:3)

在创建按钮时将ID放在按钮的Tag属性中,然后检查事件处理程序中的ID。

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

...

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

}

答案 2 :(得分:1)

第一:通过开关在一个事件中处理多次点击的不良做法。但无论如何解决方案是:

创建您自己的控件,该控件继承按钮并将您的ID作为属性进行广告。所以你可以通过以下方式访问它:

MyButton b = (MyButton)sender;

switch(b.ID) { 
    //Code goes here 
}

答案 3 :(得分:0)

如果您添加的每个按钮都有唯一的ID,为什么不使用按钮的ID属性?

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

//...

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

}