我想知道,如果我有3个按钮,它是如何识别的,点击了哪个按钮。
谢谢&问候
答案 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,您可以通过它收集命令名称和命令参数