Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用单个按钮单击事件调用具有不同参数的方法_C# - Fatal编程技术网

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

C# 如何使用单个按钮单击事件调用具有不同参数的方法,c#,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) { Proc

我有多个按钮单击事件:

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);
}
var senderButton = sender as Button;
if (sender != null)
{
    Procedure((int) senderButton.Tag);
}

您可以将要传递给按钮的参数(
i
在您的示例中)存储在按钮的属性中,然后使用如下内容:

private void button[i]_Click(object sender, EventArgs e)
{
    Procedure(i);
}
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);

}

标签属性,是为这种情况而设计的


read是doc/MSDN

在Winforms中,在类构造函数中调用了
InitializeComponent()

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

button1_Click += button1_Click...
您只需将按钮单击事件订阅到您的
过程
方法

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);
}

你复制并粘贴了我的答案吗?@user3185569对我的答案投否决票是非常幼稚的。下次解释如何使用它。至于记录编号,
btn
是标准的匈牙利符号,我已经使用了近20年了,我也依赖于标准的按钮命名,当我使用按钮数组时,只需替换“按钮”。其他一切都是标准的。