Announcement

Collapse
No announcement yet.

Allgemeiner Eventhandler für Form-Applikation

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

  • Allgemeiner Eventhandler für Form-Applikation

    Moin,

    Hat jemand evtl. einen Link, wo beschrieben steht, wie ich Events allgemein verarbeiten kann in einer Form-Anwendung?

    Zur Erklärung:
    Ich habe eine kleine Infobar, in der je nachdem, welches Element den Focus hat einen anderen Text hat.
    Nun kann ich natürlich bei jedem Element das Enter-Event verarbeiten, aber das finde ich etwas zu unschön.
    Besteht die Möglichkeit, einen EventHandler zur Verfügung zu stellen, der erstmal alle Enter-Events abfängt und diese dann darin verarbeitet werden können?

    Danke für Tipps!
    Gruß Arne
    PHP rocks!
    Eine Initiative der PHP Community

  • #2
    Hallo,

    der erstmal alle Enter-Events abfängt und diese dann darin verarbeitet werden können?
    Das wird umständlich, einfacher gehts wenn du bei jedem Element den gleichen Event-Handler anhängst. Über das sender-Argument weißt du dann woher es kommt, da kannst du casten und z.B. den Text auslesen.

    Sinngemäß:
    [highlight=c#]
    foreach (Control ctrl in InfoBar)
    {
    ctrl.MouseEnter += OnControlMouseEnter;
    }

    private void OnControlMouseEnter(object sender, EventArgs e)
    {
    Control ctrl = sender as Control;
    string text = ctrl.Text // Control durch den jeweiligen Typ halt ersetzen
    }
    [/highlight]


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Originally posted by Arne Drews View Post
      Nun kann ich natürlich bei jedem Element das Enter-Event verarbeiten, aber das finde ich etwas zu unschön.
      Weil? Beim laden der Form einfach mal über alle Controls zu iterieren und den einen EventHandler mit allen Controls zu verdrahten ist jetzt nicht wirklich schwer.
      Alternativen wären vermutlich nicht schöner. Möglichkeiten

      a.) Event über die Automation API abfangen
      b.) Ein WH_SHELL WindowHook zum fangen der passenden WindowMessage beim Focuswechsel.
      c.) Ein Timer der regelmäßig Form.ActiveControl abfragt.
      d.) Schreibe einen IMessageFilter der die WM_SETFOCUS bzw. WM_KILLFOCUS Messages fängt.

      Comment


      • #4
        Danke, das hatte ich nicht bedacht.
        Geht natürlich wunderbar so...
        PHP rocks!
        Eine Initiative der PHP Community

        Comment

        Working...
        X