Forums Neueste Beiträge
 

Event spy

16/10/2007 - 14:55 von Matthias Heise | Report spam
Hallo,

hat jemand irgendein Idee, mit welchem Tool ich verfolgenden kann wo in
meiner Applikation z.B. der KeyPress Event verbraucht wird? Ich hab es mit
Managed Spy von Microsoft versucht, aber der bringt nur etwas, wenn ich genau
das richtige Control vorher ausgewàhlt habe.

Bei mir hab ich nun das Problem, da ich KeyPress habe, aber es bei mir nicht
an der richtigen Stelle ankommt, also irgendwer das vorher abfàngt. Wie kann
ich das am besten herausfinden?

Danke für hilfreiche Informationen.

Matthias
 

Lesen sie die antworten

#1 Günter Prossliner
16/10/2007 - 17:38 | Warnen spam
Hallo Matthias!

hat jemand irgendein Idee, mit welchem Tool ich verfolgenden kann wo
in meiner Applikation z.B. der KeyPress Event verbraucht wird?



Ein Event kann man nicht "verbrauchen". Ein Event eine Liste von Handlern,
auf welche nur += bzw. -= Operationen ausgeführt werden können. Ein
Komponente kann somit nicht die anderen Handler entfernen also nicht
"verbrauchen".

Etwas anderes ist es, wenn die korrespondierende OnXXX Methode überschrieben
wird, aber kein base.OnXXX aufgerufen wird. In diesem Fall wird dann gar
kein EventHandler angesprochen.

Es gibt allerdings teilweise EventHandler welche eine "Cancel" (bzw.
"Handled") Funktionalitàt beinhaltet. Diese können gezielt die Kette von
Handlern unterbrechen. Die "KeyPressEventArgs" bieten eine solche
Funktionalitàt.

Beachte bitte bei meinen Ausführungen, dass diese Dinge nicht von der CLR
festgeschrieben sind, sondern auf Patterns beruhen welche in der .NET
Entwicklung als de-facto Standard angesehen werden (Verhalten von add/remove
Accessoren, protected virtual OnXXX welche das Event aufruft, ...) und auch
von MS im Framework selbst (in Deinem Fall ist System.Windows.Forms
relevant) angewendet wurden. Bei fremden eigenen (suboptimalen)
Implementierungen können diese Patterns nicht korrekt implementiert sein.

Bei mir hab ich nun das Problem, da ich KeyPress habe, aber es bei
mir nicht an der richtigen Stelle ankommt, also irgendwer das vorher
abfàngt.



Das kann wie bereits genannt nicht der Grund sein. Ein darüberliegender
Handler kann allerding die "Handled" Eigenschaft auf true setzen.

Du solltest:

* die Einstellung der "KeyPreview" Eigenschaft überprüfen. Diese steuert wer
die Key-Events empfàngt.
* Überprüfen ob e.Handled=true im Code gesetzt wird

vgl.
[Form.KeyPreview Property (System.Windows.Forms)]
http://msdn2.microsoft.com/en-us/li...eview.aspx


[How to capture shortcut keys in Visual Studio .NET]
http://support.microsoft.com/kb/839201



OK?
mfg GP

Ähnliche fragen