Delegate und Event, ergänzende Fragen
-
Nach langwierigem Studium ist es mir jetzt endlich gelungen, mit Hilfe von event u. delegate aus einer selbstdefinierten Klasse auf mein Hauptprogramm (Form1) zuzugreifen. Da ich es noch nicht hundertprozentig verstanden habe, noch drei ergänzende Fragen:
1. Ist delegate und event die einzige Möglichkeit oder soll ich mich auch noch mal mit Interface beschäftigen. Ist mir beim Lesen unter die Augen gekommen und erinnert mich ansatzweise an Delphi. Ich weiss man kann alles als Event betrachten auch wenn nur das Ergebnis einer math. Operation feststeht.
2. Ich habe in der Hilfe folgenden Code gefunden, der mir eigentlich auf die richtige Bahn gebracht hat:
delegate void ClickEventHandler(int, double); delegate void DblClickEventHandler(String^); // class that defines events ref class EventSource { public: event ClickEventHandler^ OnClick; // declare the event OnClick event DblClickEventHandler^ OnDblClick; // declare OnDblClick void FireEvents() { // raises events OnClick(7, 3.14159); OnDblClick("Hello"); } }; // class that defines methods that will called when event occurs ref class EventReceiver { public: void OnMyClick(int i, double d) { Console::WriteLine("OnClick: {0}, {1}", i, d); } void OnMyDblClick(String^ str) { Console::WriteLine("OnDblClick: {0}", str); } }; usw. usw.
Was sind die beiden Konstrukte OnClick(...) u. OnDblClick(...). Platzhalter, Zeiger oder ?? für die die Funktionen in EventReceiver.
3. Warum sind bei den delegate Definitionen keine Bezeichner notwendig, also z.B. delegate void ClickEventHandler(int i, double d);
Ich weiss, für jede Frage soll man einen Beitrag schreiben, aber die drei Fragen hängen so stark zusammen, dass ich es mal so gemacht habe.
Gruss Walter