订阅没有eventhandler的click事件并使用自定义参数

时间:2017-07-10 01:42:13

标签: c# .net event-handling

我想点击上下文菜单项做一些事情,所以我会这样做:

cmsItemOne.Click += new EventHandler(someFunction);

但是,我有一个只需要传入自定义参数的函数:

private void customFunction(string someText, int someNumber)

那么如何订阅cmsItemOne.ClickcustomFunction并传递参数。

例如,(没有工作)

string theString = "Hello world";
int theInt = 5;

cmsItemOne.Click += customFunction(theString, theInt);

2 个答案:

答案 0 :(得分:3)

使用闭包

string theString = "Hello world";
int theInt = 5;

cmsItemOne.Click += (s,e) => customFunction(theString, theInt);

How to: Subscribe to and Unsubscribe from Events (C# Programming Guide)

答案 1 :(得分:0)

您可以使事件处理程序方法使用多个参数调用该函数。

cmsItemOne.Click += new EventHandler(someFunction);

private void buttonGenTool_Click(object sender, EventArgs e)
{
    customFunction(someText, someNumber);
}

private void customFunction(string someText, int someNumber)
{
    //Your function code;
}