将多个按钮路由到同一例程

时间:2013-10-09 16:37:26

标签: c# event-handling buttonclick

我有10个按钮,0-9(按钮0,按钮1,按钮2 ......)。当我点击这些按钮中的任何一个时,我想对它们执行相同的例程。我想知道如何点击任何这些按钮,将它们引导到下面的例行程序。

    private void button0_Click(object sender, EventArgs e)
    {
        int newValue;

        newValue = Convert.ToInt32(Button.text);
    }

我已经进入了每个按钮的属性,然后是事件,并将click事件更改为button0_Click(我原本认为这会添加“处理button1.click,button2.click等“after” private void button0_Click(object sender,EventArgs e)“但如果它在后台执行,只要它可以正常工作就可以。”

我还需要知道如何识别已按下的按钮,这就是我所处的“ Convert.ToInt32(Button.text)”(例如button2.text =“ 2" )。

3 个答案:

答案 0 :(得分:2)

您可以为设计器中的所有按钮选择相同的事件处理程序(在属性窗口的事件选项卡中,选择事件,并且下拉所有已定义的事件处理程序)。

要获取点击了哪个按钮,请将sender参数转换为按钮,然后你就可以了。

Button button = (Button)sender;
int value = int.Parse( button.Text );

编辑:此外,“Handles control.event”语法仅存在于Visual Basic中。

编辑:查看生成的代码(例如Form1.Designer.cs)以查看事件是如何连接的。

答案 1 :(得分:0)

C#语言不使用handles来绑定事件(就像VB那样)。实际绑定的代码在表单的生成代码中,即在您放置的背景中。

sender属性是对事件发生的控件的引用。您只需将其强制转换为控件的实际类型:

private void button0_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    int newValue = Convert.ToInt32(button.text);
}

作为使用按钮文本的替代方法(例如,如果您想将应用程序翻译成不同语言,或者根本不想依赖文本),您可以在{{{{{{ 1}}每个按钮的属性,并在事件处理程序中检索它。

答案 2 :(得分:0)

您可以将它们连接到同一个事件处理程序,从发件人中提取按钮,例如

private void button0_Click(object sender, EventArgs e)
{
    var button = sender as Button
    if (button != null)
    {
        int newValue = Convert.ToInt32(Button.text);
    }
}