How to detect which button was clicked in code behind?

前端 未结 2 1688
一整个雨季
一整个雨季 2020-12-31 17:41

I have three buttons each calling btn_Clicked on their onClick event. In code behind I want to get the ID of the button that caused postback. I kno

相关标签:
2条回答
  • 2020-12-31 18:22

    Cast the sender object to the button and then you can get all the properties.

    Button clickedButton = (Button)sender;
    

    Also tell me which method is more efficient? Calling different methods on different button clicks or calling the same method (if the functionality of each button is same).

    If the functionality is same then it's better to have a single event, since you don't have to replicate code. Remember the DRY principle.

    Consider the following example:

    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")
        {
        }
    }
    
    0 讨论(0)
  • 2020-12-31 18:25

    Check whether the sender argument of your callback method is the same reference as the button your are interested in.

    Button button1;
    Button button2;
    
    void OnClick(object sender, RoutedEventArgs args)
    {
        Button button = sender as Button;
        if (button == button1)
        {
            ...
        }
        if (button == button2)
        {
            ...
        }
    }
    
    0 讨论(0)
提交回复
热议问题