Autor Beitrag
MBreuer2
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 14.03.14 16:40 
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
ausblenden 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)
        {
           //Use a switch so we can trap other messages in the future.
            switch (m.Msg)
                case 0x0201://WM_LBUTTONDOWN:
                        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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.