2013-08-14 9 views
12

ich eine Link-Button habe, die ein regelmäßiges Click-Ereignis hat:C# übergeben zusätzliche Parameter zu einem Event-Handler, während des Ereignis zur Laufzeit verbindlich

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

Und binde ich dieses Ereignis bei der Laufzeit:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click); 

Jetzt muss ich die Funktion zusätzliches Argument akzeptieren:

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

Und das gleiche wie param passieren Eter während der Bindung dieses Ereignisses:

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

Nicht sicher, wie dies zu erreichen ist. Bitte helfen.

Vielen Dank im Voraus.

Vishal

+0

Wo ist der Datatable aus gehen zu kommen? –

+0

@PaulieWaulie es ist da, wo ich die Veranstaltung verbindlich bin. – Vishal

Antwort

39

Sie anonyme Delegaten für das verwenden können:

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

WOW funktionierte wie ein Zauber, danke @alex, hart, ich bin noch nicht viel bekannter mit anonymen Delegierten. – Vishal

+0

Sie sollten diese Antwort als richtig markieren. Dies kann anderen helfen. –

+0

Sie können einfach so schreiben Object.SomeEvent + = (Absender, e) => SomeEventHandler (Absender, e, "Data"); /// Und definieren Sie Ihre Event-Handler wie folgt void SomeEventHandler (Objekt Absender, SomeEventArgs e, String-Daten); –

2

durch die Verwendung von Delegierten:

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

ich nicht genau wissen, wann es geändert, aber es ist jetzt auch einfacher!

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

Dies funktionierte tatsächlich besser in meinem Szenario, da ich einen EventHandler EventHandler zuordnen musste. Die akzeptierte Antwort hat dieses Szenario nicht gelöst. – 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 
} 
Verwandte Themen