如何使用单个按钮单击事件来调用具有不同参数的方法

时间:2016-05-21 16:20:06

标签: c#

我有多个按钮点击事件:

private void button1_Click(object sender, EventArgs e)
{
    Procedure(1);
}

private void button16_Click(object sender, EventArgs e)
{
    Procedure(16);
}

但是,我希望实现这样的目标:

private void button[i]_Click(object sender, EventArgs e)
{
    Procedure(i);
}

4 个答案:

答案 0 :(得分:1)

在Winforms中,类构造函数中有InitializeComponent()的调用。

在该方法中(如果您将鼠标光标放在方法上并右键单击>转到定义或F12,它将转到表单设计器),您将看到如何连接事件:

button1_Click += button1_Click...

您只需将按钮点击事件订阅到Procedure方法即可。

button1_Click += CallToProcedure;

你如何确定哪个按钮点击了?您只需将其从参数中的sender参数中删除:

private void CallToProcedure(object sender, EventArgs e)
{
    Button btn = sender as Button;
    int i = Convert.ToInt32(btn.Name.Replace("button", string.Empty));
    Procedure(i);
}

答案 1 :(得分:0)

您可以在Button的Tag属性中存储您传递给按钮(在示例中为var senderButton = sender as Button; if (sender != null) { Procedure((int) senderButton.Tag); } )的参数,然后使用以下内容:

private void button_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    int i = Convert.ToInt32(btn.Name.Replace("button", ""));

    Procedure(i);

}

答案 2 :(得分:0)

如果你可以依赖命名,那么简单:

while (number_x_2 < 1000)

答案 3 :(得分:-1)

使用button.Tag属性,专为此类情况而设计。

读取是doc / MSDN