Announcement

Collapse
No announcement yet.

EventArgs

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • EventArgs

    Hallo,

    ich möchte gerne meine eigene EventArgs schreiben. Z.B. eine Eigene KeyDown funktion, welche aber neben (object sender, KeyEventArgs e) auch eine Taste annimmt: (object sender, KeyEventArgs, Key key)

    wie kann ich auch allgemein meine eigene EventArgs und EventHandler schreiben?

    P.S.: Gutes neues an alle!!


    Danke!

    MfG Flo
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Z.B. eine Eigene KeyDown funktion, welche aber neben (object sender, KeyEventArgs e) auch eine Taste annimmt: (object sender, KeyEventArgs, Key key)
    Warum? Der Key steht schon in den KeyEventArgs. Und was heißt annimmt? Soll der Event dir einen Key liefern oder willst du einen Key wieder an die Klasse zurückgeben(Stichwort out bzw. ref Parameter). Apropo Key du solltest bedenken das in den Key Events eine Kombination von Keys ankommt und nicht zwingend genau 1 Key.

    wie kann ich auch allgemein meine eigene EventArgs und EventHandler schreiben?
    Nun ja eigene Events gehören zu eigenen Klassen. Wie man da Events deklariert findest du in der MSDN Hilfe.

    Du scheinst aber die Events vorhandener Klassen verändern zu wollen. Das geht nicht bzw. nicht direkt. Du würdest durch das hinzufügen eines Parameters die Signatur des Events und damit die der Klasse ändern das bricht so ziemlich jedes gültige OO Prinzip. Sollte also in jeder aktuellen OO-Sprache verboten sein.

    Wenn der ursprüngliche Author der Klasse gewisse Vorkehrungen getroffen hat hast du aber die Chance von der entsprechende Klasse abzuleiten, ein eigenen Event zu schreiben und dann an der Stelle zu zu feuern an der auch der Event feuert denn du ergänzen wolltest. In Winforms z.B. ist es üblich das zu jedem Event eine protected OnEVENT Methode gehört die man überschreiben kann. In deinem Beispiel wäre das z.B. OnKeyDown das du überschreiben kannst um einen weiteren Event zu feuern.

    [Highlight=C#]
    public delegate void NochEinKeyEventHandler(object sender, KeyEventArgs e, object extendedInfo);
    public event NochEinKeyEventHandler NochEinKeyEvent;

    protected override void OnKeyDown(KeyEventArgs e)
    {
    base.OnKeyDown(e); // Basisklasse wirft hier den ürsprüngliche KeyDown Event
    if (NochEinKeyEvent != null)
    NochEinKeyEventHandler (this, KeyEventArgs, new object());
    }[/Highlight]

    Comment


    • #3
      NochEinKeyEventHandler sowie KeyEventArgs sind ein Typ, werden aber wie eine Methode aufgerufen....

      Was mach ich falsch?
      Die Taschenlampe!

      Die perfekte Taschenlampe für Ihr Windows Phone!

      - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
      - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


      Hier gehts zu APP!

      Comment


      • #4
        Was mach ich falsch?
        Nichts. Ich habe mein Beispiel nur selbst nicht ausprobiert sondern nur nur im Editor zusammen gewürfelt so wie ich dachte das es dem entspricht was du ungefähr wolltest

        Korrigierte Fassung

        [Highlight=C#]public delegate void NochEinKeyEventHandler(object sender, KeyEventArgs e, object extendedInfo);
        public event NochEinKeyEventHandler NochEinKeyEvent;

        protected override void OnKeyDown(KeyEventArgs e)
        {
        base.OnKeyDown(e); // Basisklasse wirft hier den ürsprüngliche KeyDown Event
        if (NochEinKeyEvent != null)
        NochEinKeyEvent(this, e, new object());
        }[/Highlight]

        Comment


        • #5
          Ok, soweit hab ichs verstanden... :-P

          Wenn ich also ein neues Event schreiben möchte, wie auf deinen Link in der MSDN, wie mache ich es dass bestimmte funktionen automatisch ausgeführt werden.
          z.B. Wenn eine Taste gedrückt wird reagiert das KeyDown-Event. Wie kann man so etwas programmieren?

          Warum? Der Key steht schon in den KeyEventArgs. Und was heißt annimmt?
          Ich meine zusätzliche Parameter.

          MfG
          Die Taschenlampe!

          Die perfekte Taschenlampe für Ihr Windows Phone!

          - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
          - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


          Hier gehts zu APP!

          Comment


          • #6
            Wenn ich also ein neues Event schreiben möchte, wie auf deinen Link in der MSDN, wie mache ich es dass bestimmte funktionen automatisch ausgeführt werden.
            Da passiert nichts automatisch Du mußt das schon programmieren. Bei den Winforms-Komponenten ist es zu deinem Glück schon so programmiert das du dich relativ einfach durch überschreiben von Methoden ranhängen kannst.

            z.B. Wenn eine Taste gedrückt wird reagiert das KeyDown-Event. Wie kann man so etwas programmieren?
            Die Winforms Controls kapseln die Standard Controls von Windows diese senden Window Messages wie z.B WM_KEYDOWN die von der Control Klasse (Basisklasse der Winforms Controls) gefangen werden und dann entsprechende Methoden und Events auslöst.

            Wenn dich das im Detail interessiert sieh dir mit dem Reflector die Implementierung von Control.WndProc an.

            Comment


            • #7
              Nun, so automatisch hab ich auch nicht gemeint, hab mich nur falsch ausgedrückt... :-)

              Wie baue ich das so, damit z.B. reagiert wird wenn eine Taste gedrückt wird? Die WM_KEYDOWN kenn ich, das schema ist mir klar, nur wie baue ich allgemein soetwas, damit mein Eventarg auslöst wenn etwas passiert... Also ohne direkten Aufruf startet. So meinte ich Automatisch.
              Dass ich natürlich selbst programmieren muss ist mir klar. Nur WIE muss das aufgebaut sein versteh ich noch nicht so ganz..

              MfG
              Die Taschenlampe!

              Die perfekte Taschenlampe für Ihr Windows Phone!

              - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
              - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


              Hier gehts zu APP!

              Comment


              • #8
                das aufgebaut sein versteh ich noch nicht so ganz..
                Die Lösung für KeyDown habe ich dir weiter oben gegeben (von deinem Wunschcontrol ableiten und OnKeyDown überschreiben). Was fehlt dir denn noch zu deinem Glück?

                Comment


                • #9
                  Nur die neugierde wie sowas geht. Das Glück ist eigentlich schon komplett! Dafür auch vielen Dank!

                  Würd mich nur reizen genaueres zu wissen und aus der MSDN kann ich es nicht so genau nachvollziehen.

                  MfG
                  Die Taschenlampe!

                  Die perfekte Taschenlampe für Ihr Windows Phone!

                  - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
                  - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


                  Hier gehts zu APP!

                  Comment


                  • #10
                    Würd mich nur reizen genaueres zu wissen und aus der MSDN kann ich es nicht so genau nachvollziehen.
                    Dann sieh dir denn Sourcecode der Winform Controls an. Denn Reflector hatte ich oben verlinkt.

                    Comment

                    Working...
                    X