Laden...

Mehrere Event Methoden bei gleichen Event

Erstellt von h4x0r_ vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.396 Views
Thema geschlossen
H
h4x0r_ Themenstarter:in
2 Beiträge seit 2014
vor 10 Jahren
Mehrere Event Methoden bei gleichen Event

Hallo,

Bin neu im Forum und das ist mein erster ,Post'
Hoffe habe alles richtig gemacht wenn nicht seid mir bitte
net böse 😃

Ok also es geht darum das ich das Form Paint Event mehrer
Methoden ausführen lassen möchte.
Man kann ja bei Dynamischen Objekten die Eventmethode
mit Form.Click += new ...
zuweisen.
Nun möchte ich nicht nur einer Methode zuweisen
Sonden mehrere.
Kann ich da einfach:
Form.Click += ..
Form.Click += ..
oder muss ich das anders definieren?
Und nein ich kann leider nicht eine Methode haben in der
Ich alle anderen aufrufe. Das funktioniert dann so wie ich mir das vorgestellt habe nicht.

Würde mich um Antwort freuen 😃

MfG
h4x0r_

P
1.090 Beiträge seit 2011
vor 10 Jahren

Ja das geht. Dir sollte nur klar sein, das dann nicht festgelegt ist in welcher Reihenfolge die Methoden aufgerufen werden.

Wie so es nicht klappen soll, die Methoden in einer Methode abzuarbeiten ist mir an dem Punkt nicht klar.

Wenn du sagst was du machen willst, kann man vielleicht einen Tip geben, wie man es am besten umsetzt.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

H
h4x0r_ Themenstarter:in
2 Beiträge seit 2014
vor 10 Jahren

Danke erstmal das du mir geantwortet hast 😃
Ja das mit der Reihenfolge ist mir klar. Aber das Lös ich mit ein Paar Verzweigungen das geht schon.
Ich programmiere grade an einem Spiel. Und ich brauche das, weil GDI+ etwas eigen ist und keine
Event hat. Ist ja nur zum Zeichnen da.
Aber wenns mit mehreren Methoden geht ist es sehr gut!

Mich hat nur verwirrt weil man += schreibt. Das bedeutet ja man
'Fügt hinzu' und 'nimmt den Wert an'
Bei mehren Zuweisungen würde das Evet immer den
zuletzt zugewiesenen Wert (Methode) bekommen.

Aber gut das es klappt,
Danke 😉

D
96 Beiträge seit 2012
vor 10 Jahren

'Fügt hinzu' und 'nimmt den Wert an'

Eben, und deswegen funktioniert += auch. Du nimmst den momentanen Wert, fügst die neue Methode hinzu und schreibst das Gesamte wieder in das Event.

Die Reihenfolge, in der die Eventhandler ausgeführt werden, ist in der Regel identisch zu der Reihenfolge in der die Handler hinzugefügt wurden. Zudem lässt sich da an der Reihenfolge nichts mit ein "paar" Verzweigungen lösen. Dein Vorhaben lässt sich definitiv auch mit nur einer einzigen Methode lösen, die alle anderen Methoden in einer bestimmten Reihenfolge aufruft (eben genau das macht ja ein Event).

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo h4x0r_,

es ist hier überhaupt kein Grund erkennbar, warum man die verschiedenen Aktionen nicht aus einer Methode aufrufen kann, die man dann als EventHandler registriert. Das sollte normalerweise immer gehen und das sollte man immer vorziehen, weil die Reihenfolge der EventHandler nicht festgelegt und schon gar nicht garantiert ist, weshalb man sich auch nicht darauf verlassen sollte, selbst wenn man in der Vergangenheit stets eine bestimmte Reihenfolge festgestellt hat. Mehrfaches += bei Delegaten sollte man nur verwenden, wenn die EventHandler vollkommen unabhängig voneinander sind und Reihenfolge der Abarbeitung vollkommen egal ist.

Fast alle Operatoren wirken verschiedene, je nachdem auf welchen Typ von Argumenten man die anwendet. Bei Zahlen addiert += den rechten Wert auf den Inhalt der linken Variable , bei Strings hängt += den rechten String an den linken an(*), und bei (muticast) Delegaten wird der neue EventHandler der Liste der bereits registrieren EventHandler hinzugefügt.

(*) Das ist etwas vereinfacht formuliert und auch nicht ganz korrekt, denn Strings sind immutable, weshalb immer ein neues String-Objekt erstellt wird, siehe [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik). Im Ergebnis enthält die Variable auf der linken Seite nach dem += trotzdem einen String in dem die beiden Ausgangstrings aneinander gehängt sind.

Das alles fällt allerdings unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore

Thema geschlossen