C#在click事件中怎么传递一个自定义的参数,举个例子

for (int i = 1; i < 18; i++)
{
pb[i].Click += new EventHandler(Pb_Click);
}
}
public override void Pb_Click(object sender, EventArgs e,int i){}
比如我要把i的值传过去

pb[i].TabIndex = i.ToString();

public override void Pb_Click(object sender,EventArgs e)
{
var btn = (Button)sender;
var val = btn.TabIndex;

}
这是WINFORM

借用控件的属性传值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-22
我做一个小程序时,也遇到楼主的问题了,最后我是这样解决的,
myText[i, k] = new TextBox();
myText[i, k].Location = new Point(k * 35+40 , i * 30+30 );
myText[i, k].Size = new Size(35, 30);
myText[i, k].Name = Convert.ToString(i)+" "+ Convert.ToString(k);//把需要传送的变量变成对象名,中间用字符隔开,我用的是空格。
this.myText[i, k].TextChanged += new System.EventHandler(this.myText_TextChanged);
然后在事件代码里面提取:
private void myText_TextChanged(object sender, EventArgs e)
{
int i, k;
TextBox tex = (TextBox)sender;
string[] arr1 = tex.Name.Split(' ');//这里是用空格分组的,和上面要对应起来
i = Convert.ToInt16(arr1[0]);
k = Convert.ToInt16(arr1[1]);

这样做可以满足楼主的要求,如果传送其他参数就不行了, 我没学过计算机,这样的解决方法可能很另类,让大家见笑了。本回答被网友采纳
第2个回答  2020-04-01
menuItemFolder.Click += (sender, e) => YourMethod(owner, dataType);

public void YourMethod(owner, dataType)


相似回答