Control, welches Event nicht kennt

DrMueller

Erfahrenes Mitglied
Hallo Leute,
mal wieder ein ganz verwicktes Problem, an dem ich schon einige Stunden dran bin:
Wir haben auf einem Form ein von uns erstelltes Usercontrol, dieses hat wiederum einige zugekaufte/Standard-Controls auf sich.
Nun haben wir den lustigen Effekt, dass der Key_Down Event manchmal reagiert manchmal nicht.
Ich bin leider gar kein Event Spezialist, vor allem bei den Standard Events nicht, daher meine Frage:
-Sollte, wenn der Fokus auf einem Control ist, der Form-Event auch zünden?
-Einige dieser zugekauften Controls kennen den KeyDown Event nicht, kann es sein, dass wenn eines davon fokussiert ist, der Keydown Event einfach verschwindet?

Wie gesagt, teilweise klappt 4-5 mal hintereinander, dann wieder nicht etc., keine Regelmässigkeit dahinter. Der Event wird einfach nirgends gezündet.


Vielleicht hat ja jemand eine Idee...
 
Wenn ein anderes Control den Focus hat, muss dieses den KeyDown auswerten, der Form_KeyDown hat dann keine Bedeutung.

Du kannst das einfach reproduzieren:

Erstelle eine Form, packe ein Command-Button darauf (dieses wird nach dem Form_Load den Focus erhalten) und füge eine Funktion dazu, die den Form_KeyDown auswertet. Du wirst sehen, es geschieht nichts.
 
Eine Korrektur zu meiner letzten Aussage: Wenn Du die KeyPreview-Eigenschaft der Form auf True stellst, dann wird das Form_KeyDown ausgelöst.

Jedoch habe ich damit selten gearbeitet, weil dies unter manchen Voraussetzungen ungewollte Folgen haben kann.
 
Hm ok danke,
das Problem ist natürlich, was mache ich da? Kann ich den Event irgendwie umleiten resp. testen ob überhaupt das das Problem ist?

Hm Edith sagt: Grad gecheckt, tatsächlich KeyPreview schon aktiv...
 
Die Ursache lässt sich hier vermutlich kaum wirklich lösen, da Euer "Versuchsaufbau" mit einem UserControl und mehreren zugekauften Controls für uns hier nicht reproduzierbar ist.

Natürlich ist es denkbar, dass zugekaufte Controls sich anders verhalten als vorgesehen. Du könntest in der Entwicklungsumgebung in die GotFocus aller Controls eine Protokollierung (z.B. mit Debug.Print...) einbauen, damit Du heraus bekommst, welches Control wann den Focus hat. Dann siehst Du vielleicht, zu welchem Zeitpunkt das KeyDown nicht funktioniert, und welches Control daran schuld ist.
 
Ja das Problem ist wirklich verzwickt, mittlerweile habe ich in einem Testprojekt rausgefunden, dass Ctrl + C, darum gehts, eigentlich automatisch von diesem Control ausgewertet werden soll. Wie gesagt, kann gut was mit der Fokussierung zu tun haben, muss die ganze Sache wohl noch mal von hinten aufrollen :)

Egal, danke schonmal für die Hilfe
 
Wenn das Control diese Tastenkombination automatisch auswerten soll, liegt das Problem vielleicht an aktivierten KeyPreview-Eigenschaft. Möglicherweise kommen sich dann das Control und die Form ins Gehege. Schalte diese Eigenschaft doch mal aus, und schau, was dann passiert.
 
Zurück