MBreuer2 - Fr 14.03.14 16:40
Titel: Events allgemein abfangen
Hallo,
ich möchte gern in einem Textfeld die Mausevents die bei einem anderen Control auftreten hineinschreiben.
Das Control möchte ich allerdings möglichst nicht kennen.
Wäre es bekannt könnte ich z.B. bei einem Button alle Listener Registrieren und das Textfeld darin dann füllen.
Das möchte ich allerdings nicht weil es recht viel Code sein würde und ich es für eine Masse an Controls tun müsste.
Gibt es eine Möglichkeit Events allgemein zu fangen und den Namen/Parameter zu bekommen ?
Derzeit habe ich einen Messagefilter der z.B. mit
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| internal class MessageFilter : IMessageFilter { #region IMessageFilter Members bool IMessageFilter.PreFilterMessage(ref Message m) { switch (m.Msg) case 0x0201: txtPropertyvalue.Text = m.Msg.ToString(); return true; } break; } return false; } #endregion } |
etwas auf die Textbox schreibt ich möchte aber gern verschiedene Szenarien anders implementieren
z.B. Bei Mausevents soll "Maus" + Taste(n) + Position bei Keyboard "Keyboad" + Taste(n) stehen
Für Hilfe bin ich sehr Dankbar
Viele Grüße
Ralf Jansen - Fr 14.03.14 17:05
Zitat: |
Gibt es eine Möglichkeit Events allgemein zu fangen und den Namen/Parameter zu bekommen ? |
Events oder Window Messages?
Weder kann man Events 1zu1 auf Window Messages mappen noch umgekehrt die in den Messages verwendeten UI Handles eindeutig auf ein Control.
Die Lösung für Window Messages wird so aussehen wie du es versuchst über einen IMessageFilter.
Wenn du bei Events an Winform Controls oder sonstige Klassen mit veröffentlichten Events denkst wird das vermutlich nur gehen wenn du die Oberfläche aller Instanzen abtastest(Reflection) und dich an jeden vorhanden Event registrierst.