如何检测代码中单击了哪个按钮?

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

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

 Button clickedButton = (Button)sender; 

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

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

请考虑以下示例:

 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") { } } 

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

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