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年了,我也依赖于标准的按钮命名,当我使用按钮数组时,只需替换“按钮”。其他一切都是标准的。