web-dev-qa-db-ja.com

C#は、実行時にイベントをバインドしながら、追加のパラメーターをイベントハンドラーに渡します

通常のクリックイベントがあるリンクボタンがあります。

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);

これを達成する方法がわかりません。助けてください。

前もって感謝します。

ヴィシャル

15
foo-baar

そのために匿名デリゲートを使用できます。

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

いつ変更されたのか正確にはわかりませんが、さらに簡単になりました!

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

デリゲートを使用して:

lnkbtnDel.Click += delegate(object s, EventArgs e1) { 
                 Dynamic_Click(s, e1, lnkbtnDel.ID); 
               };`  
2
nivethitha
EventHandler myEvent = (sender, e) => MyMethod(myParameter);//my delegate

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

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