如何识别单击哪个按钮?

时间:2013-02-23 12:07:43

标签: c# asp.net

我想知道,如果我有3个按钮,它是如何识别的,点击了哪个按钮。

谢谢&问候

2 个答案:

答案 0 :(得分:3)

除了有3个按钮之外,我对你的程序一无所知。所以,这是我们的按钮:

Button b1 = new Button();
b1.Name = b1.Text = "Button 1";
Button b2 = new Button();
b2.Name = b2.Text = "Button 2";
Button b3 = new Button();
b3.Name = b3.Text = "Button 3";

现在,每个按钮都需要在单击时打开显示其名称的消息框。这是我们要使用Button_Click事件的地方。每个按钮的Click事件可以有一个唯一的方法,当单击该按钮时,该方法被调用,或者所有按钮都可以使用相同的方法。我会为你提供两种方式。


方法1:每个按钮的方法相同。此方法除了显示按下的按钮名称外什么都不做。

private void Global_Button_Click(object sender, EventArgs e)
{
    MessageBox.Show(((Button)sender).Name + " was pressed!");
}

每当单击一个按钮时,将调用此方法,并将该按钮指定为object sender参数。请注意,在将其用作按钮之前,我们必须将其强制转换为(Button)sender

还有一件事要做。这不会自动为每个按钮调用,它只是一种方法。相反,我们必须告诉我们的按钮在点击它们时调用它。这就是事件的用途:

b1.Click += Global_Button_Click;
b2.Click += Global_Button_Click;
b3.Click += Global_Button_Click;

方法2:每个按钮的唯一方法。仅当您的按钮不仅仅打印按钮名称时,才需要此方法。因此,如果按钮点击需要为不同的按钮执行独特的操作,请使用此按钮。

它与方法一相同,但不是为所有按钮定义一个方法,而是定义3个方法,每个方法一个。

private void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 1 was pressed!");
    // here you can add more code which will be executed when button 1 is clicked
}

private void Button2_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 2 was pressed!");
    // code for button 2
}

private void Button3_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button 3 was pressed!");
    // code for button 3
}

现在最后我们需要告诉按钮在点击时使用这些方法,我们再次使用事件。这一次,每个按钮的方法不同:

b1.Click += Button1_Click;
b2.Click += Button2_Click;
b3.Click += Button3_Click;

答案 1 :(得分:1)

通常按钮具有单独的事件处理程序,但如果您有三个按钮共享相同的事件处理程序,则使用命令名称/命令参数来区分它们。事件处理程序将具有CommandEventArgs,您可以通过它收集命令名称和命令参数