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


Anmelden zum Antworten