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

kar*_*s9o 4 c# events

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

boton.Click += infoApp;
//i think thats similar to: boton.Click = new System.EventHandler(infoApp).
Run Code Online (Sandbox Code Playgroud)

当单击按钮'boton'时,函数/方法'infoApp'触发,此方法如下:

private void infoApp(object sender, EventArgs e)
{
/* my code*/
}
Run Code Online (Sandbox Code Playgroud)

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

boton.Click += infoApp(string par)
Run Code Online (Sandbox Code Playgroud)

所以我认为这可行:

private void infoApp(object sender, EventArgs e, string par)
{
/*My code*/
}
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

我已经为代表们做了一些事,但我不明白; 我不知道该怎么做才能解决我的问题; 有任何想法吗?

提前致谢

pd:对不起我糟糕的英语,我不是说英语的人.尝试简单解释.我正在使用VS2008.

Dav*_*ish 9

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

而不是这一行:

boton.Click += infoApp;
Run Code Online (Sandbox Code Playgroud)

做这个:

string par = "something";

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