-2

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

感谢和问候

4

2 回答 2

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;
于 2013-02-23T12:19:34.953 回答
1

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

于 2013-02-23T12:19:08.760 回答