web-dev-qa-db-fra.com

C # passe un paramètre supplémentaire à un gestionnaire d'événements tout en liant l'événement au moment de l'exécution

J'ai un bouton de lien qui a un événement de clic régulier:

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

Et je lie cet événement au runtime:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click);

Maintenant, j'ai besoin de la fonction pour accepter l'argument supplémentaire:

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

Et passez le même paramètre que tout en liant cet événement:

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

Vous ne savez pas comment y parvenir. S'il vous plaît, aidez-nous.

Merci d'avance.

Vishal

15
foo-baar

Vous pouvez utiliser un délégué anonyme pour cela:

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

Je ne sais pas exactement quand cela a changé, mais maintenant c'est encore plus facile!

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

à l'usage du délégué:

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
}
0
CarLoOSX