2014-05-06 11 views
5

Mam następujący kod mocującą obsługi zdarzenia:Wyrejestrowanie wyrażenie lambda z imprezy C#

this.btnOK.Click += (s,e) => { MessageBox.Show("test"); }; 

mogę wypisać że wyrażenia lambda z odbytu?

+0

Nie można anulować subskrypcji funkcji anonimowej, ponieważ jest ona anonimowa i nie można uzyskać do niej dostępu. Możliwe rozwiązanie znajdziesz na http://stackoverflow.com/questions/9745280/how-to-unsubscribe-an-anonymous-function-in-dispose-method-of-a-class. Nie możesz się wypisać annoy –

Odpowiedz

5

Dlaczego nie tylko zapisać przypisanego lambda?

EventHandler lambda = (s,e) => { MessageBox.Show("test"); }; 

... 

this.btnOK.Click += lambda; 

... 

this.btnOK.Click -= lambda; 
+0

Ugh, nic gorszego niż naciśnięcie klawisza Enter przez pomyłkę. –

-3

można zrobić:

this.btnOK.Click = null; 
+0

Boom ze społeczności :) –

+1

Ale to spowodowałoby, że wszystkie "subskrybowane zdarzenia" pójdą do drenażu –

+1

@nowhewhomustnotbenamed., Może to spowodować tylko błąd kompilatora. –

-2

Nie możesz un-assign that event ponieważ jest to anonymous method.

Podaj nazwę i możesz zrezygnować z subskrypcji.

+1

@downvoter: proszę o komentarz? –