我如何在c#中参数化事件

时间:2012-05-09 14:07:25

标签: c# events

我想重新定义一个事件,我的意思是,我有这个:

boton.Click += infoApp;
//i think thats similar to: boton.Click = new System.EventHandler(infoApp).

当点击按钮'boton'时,函数/方法'infoApp'触发, 这个方法是这样的:

private void infoApp(object sender, EventArgs e)
{
/* my code*/
}

直到这里,evetithing顺利;但我需要向该方法发送另一个参数:

boton.Click += infoApp(string par)

所以我认为这可行:

private void infoApp(object sender, EventArgs e, string par)
{
/*My code*/
}

但事实并非如此。

我已经像代表这样的东西,但我不明白;我不知道该怎么做才能解决我的问题;任何想法?

提前致谢

pd:抱歉我的英语很糟糕,我不是说英语的人。尝试简单解释。我正在使用VS2008。

1 个答案:

答案 0 :(得分:9)

解决这个问题的一种方法是将事件处理程序包装在一个闭包中:

相反这一行:

boton.Click += infoApp;

这样做:

string par = "something";

boton.Click += (sender, e) => {
  //Now call your specific method here:
  infoApp(sender, e, par);
};