EventHandler

17/09/2009 - 12:21 von Lars Eggert | Report spam
Hallo NG,

kleine Frage zu EventHandlern auf z.B. Buttons.
Ich habe eien Routine, die dieverse Controls aufruft und den Buttons
Funktionen per EventHandler zuweist.
Ganz einfach mit:

myUC.button1.Click += new System.EventHandler(DoMyEvent);

Nun die Frage:
Wird diese Routine ein 2. mal ausgeführt .. oder ein 3. mal .. wird dann der
EventHandelr auch ein 2. oder 3. mal auf den button gelegt, so daß der
DoMyEvent dann 2 oder gar 3 mal ausgefphrt wird?
Ist es in diesem Fall ergo notwendig eventuelle EventHandler, die noch auf
dem Button liegen zu entfernen und gibt es eine Möglichkeit einfach alle
EventHandler eines Buttons auf einmal zu löschen?

Danke und Gruß

Lars
 

Lesen sie die antworten

#1 Carsten Maul
17/09/2009 - 14:08 | Warnen spam
Eventhandler sind Multicast-fàhig und deswegen wird mit dem Operator +=
jedes mal ein zusàtzlicher Handler angelegt. Alle Handlerwerden bei
einem Event nacheinander abgearbeitet. Mit -= entfernst Du einen
Handler. Ich denke mal Du kannst myUV.button1.Click auf NULL abfragen
um zu erfahren, ob schon noch kein Eventhandler existiert. Im Gegensatz
zu Delegates kann Subscriber-Object nur seine Events entfernen, d.h. Du
kannst nicht einfach alle Events für einen Broadcaster-Object löschen.

Gruß

Carsten

On 2009-09-17 12:21:11 +0200, "Lars Eggert" said:

Hallo NG,

kleine Frage zu EventHandlern auf z.B. Buttons.
Ich habe eien Routine, die dieverse Controls aufruft und den Buttons
Funktionen per EventHandler zuweist.
Ganz einfach mit:

myUC.button1.Click += new System.EventHandler(DoMyEvent);

Nun die Frage:
Wird diese Routine ein 2. mal ausgeführt .. oder ein 3. mal .. wird dann der
EventHandelr auch ein 2. oder 3. mal auf den button gelegt, so daß der
DoMyEvent dann 2 oder gar 3 mal ausgefphrt wird?
Ist es in diesem Fall ergo notwendig eventuelle EventHandler, die noch auf
dem Button liegen zu entfernen und gibt es eine Möglichkeit einfach alle
EventHandler eines Buttons auf einmal zu löschen?

Danke und Gruß

Lars


Ähnliche fragen