2013-08-14 14 views
12

Ho un pulsante di collegamento che hanno un normale evento click:C# passano parametro aggiuntivo a un gestore di eventi mentre vincolante l'evento al tempo di esecuzione

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

E mi legano questo evento presso il runtime:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click); 

Ora ho bisogno la funzione di accettare ulteriore argomento:

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

E passare lo stesso come param Durante l'associazione di questo evento:

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

Non so come ottenere ciò. Per favore aiuto.

Grazie in anticipo.

Vishal

+0

Dov'è il DataTable andando a venire? –

+0

@PaulieWaulie è li dove lego l'evento. – Vishal

risposta

39

È possibile utilizzare delegato anonimo per questo:

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

WOW ha funzionato come un incantesimo, grazie @alex, non sono ancora molto familiare con i delegati anonimi. – Vishal

+0

Dovresti contrassegnare questa risposta come corretta. Questo può aiutare gli altri. –

+0

Semplicemente puoi scrivere in questo modo Object.SomeEvent + = (sender, e) => SomeEventHandler (mittente, e, "Dati"); /// E definire il gestore di eventi in questo modo void SomeEventHandler (mittente dell'oggetto, SomeEventArgs e, dati stringa); –

2

mediante l'uso di delegato:

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

Non so esattamente quando è cambiato, ma ora è anche Più facile!

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

Questo ha funzionato meglio nel mio scenario in quanto avevo bisogno di mappare un EventHandler previsto su EventHandler . La risposta accettata non ha risolto questo scenario. – Stunt

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

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

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