如何检测代码背后点击了哪个按钮?

时间:2012-12-13 04:36:20

标签: c# asp.net button

我有三个按钮,每个按钮在btn_Clicked事件中调用onClick。在后面的代码中我想获得导致回发的按钮的ID。我知道我可以分配每个按钮来调用不同的方法,但我想学习一点ASP.Net。还告诉我哪种方法更有效?在不同的按钮点击上调用不同的方法或调用相同的方法(如果每个按钮的功能相同)。

2 个答案:

答案 0 :(得分:23)

将发件人对象转换为按钮,然后您就可以获得所有属性。

Button clickedButton = (Button)sender;
  

还告诉我哪种方法更有效?调用不同的方法   在不同的按钮点击或调用相同的方法(如果   每个按钮的功能都相同。)

如果功能相同,那么最好只有一个事件,因为您不必复制代码。请记住DRY principle

考虑以下示例:

protected void Button1_Click(object sender, EventArgs e)
{
    Button clickedButton = sender as Button;

    if (clickedButton == null) // just to be on the safe side
        return;

    if (clickedButton.ID == "Button1")
    {
    }
    else if(clickedButton.ID == "Button2")
    {
    }
}

答案 1 :(得分:4)

检查回调方法的sender参数是否与您感兴趣的按钮的参考相同。

Button button1;
Button button2;

void OnClick(object sender, RoutedEventArgs args)
{
    Button button = sender as Button;
    if (button == button1)
    {
        ...
    }
    if (button == button2)
    {
        ...
    }
}