0

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

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

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

我已经进入了每个按钮的属性,然后是事件,并将点击事件更改为 button0_Click(我原以为这会在“ private void button0_Click(object sender )”之后添加“句柄 button1.click、button2.click 等” , EventArgs e) " 但如果它在后台执行此操作,只要它有效就可以。)

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

4

3 回答 3

2

您可以为设计器中的所有按钮选择相同的事件处理程序(在属性窗口的事件选项卡中,选择事件,将出现一个包含所有已定义事件处理程序的下拉列表)。

要获取单击了哪个按钮,请将sender参数转换为 Button ,您将拥有它。

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

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

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

于 2013-10-09T16:43:08.933 回答
0

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

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

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

作为使用按钮文本的替代方法(例如,如果您想将应用程序翻译成不同的语言,或者只是不想依赖文本),您可以在Tag每个按钮的属性中放置您喜欢的任何内容,并在事件处理程序中检索它。

于 2013-10-09T16:44:32.547 回答
0

您可以将它们全部连接到同一个事件处理程序,然后从发送方提取按钮,例如

private void button0_Click(object sender, EventArgs e)
{
    var button = sender as Button
    if (button != null)
    {
        int newValue = Convert.ToInt32(Button.text);
    }
}
于 2013-10-09T16:44:40.163 回答