C#在运行时绑定事件时将附加参数传递给事件处理程序

时间:2013-08-14 14:15:31

标签: c# asp.net methods parameters arguments

我有一个链接按钮,它有一个常规点击事件:

protected void lnkSynEvent_Click(object sender, EventArgs e)
{
}

我在运行时绑定了这个事件:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click);

现在我需要函数接受其他参数:

protected void lnkSynEvent_Click(object sender, EventArgs e, DataTable dataT)
{
}

在绑定此事件时传递相同的参数:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click, //somehow here);

不确定如何实现这一目标。 请帮忙。

提前致谢。

维沙尔

4 个答案:

答案 0 :(得分:40)

您可以使用匿名委托:

lnkSynEvent.Click += 
         new EventHandler((s,e)=>lnkSynEvent_Click(s, e, your_parameter));

答案 1 :(得分:3)

我不确切知道它什么时候改变了,但现在它更容易了!

lnkSynEvent.Click += (s,e) => lnkSynEvent_Click(s, e, your_parameter);

答案 2 :(得分:2)

使用委托:

lnkbtnDel.Click += delegate(object s, EventArgs e1) { 
                 Dynamic_Click(s, e1, lnkbtnDel.ID); 
               };`  

答案 3 :(得分:0)

EventHandler myEvent = (sender, e) => MyMethod(myParameter);//my delegate

myButton.Click += myEvent;//suscribe
myButton.Click -= myEvent;//unsuscribe

private void MyMethod(MyParameterType myParameter)
{
 //Do something
}