Die Erfassung KeyDown-Ereignisse in einem UserControl
Ich habe ein user-control mit mehreren untergeordneten Steuerelemente. Ich brauche das user interface reagiert auf Tastendrücke, so dass ich mich dazu entschlossen, den code in eine MainControl_KeyDown Veranstaltung. Allerdings, wenn ich eine Taste drücken in meine Anwendung ein, dieses Ereignis nicht Feuer.
Ich eine Lösung gefunden habe über eine Suchmaschine die sich auf die Verwendung der Windows-API, die ich gerne vermeiden möchte, da es scheint wie overkill für das, was sollte eine Funktion sein, die ordnungsgemäß unterstützt durch die .NET framework.
Ich fand [die Antwort][1] die meisten hilfreich - Sie überschreiben der ProcessCmdKey(). [1]: stackoverflow.com/a/1616965/327458
Dieser link sollte die Antwort sein.
Dieser link sollte die Antwort sein.
InformationsquelleAutor Mark Withers | 2009-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man hinzufügen, ein KeyDown-Ereignis-handler für jedes untergeordnete Steuerelement in Ihrem user-control-und das KeyDown-Ereignis des Benutzersteuerelements in jeder, etwa so:
InformationsquelleAutor Patrick McDonald
Ich weiß, dieser thread ist ein bisschen alt, aber ich hatte ein ähnliches problem und behandelt es auf eine andere Weise:
In der Haupt-Fenster änderte ich die KeyPreview-Attribut auf true.
Ich habe mich registriert, das KeyDown-Ereignis-handler des Hauptfensters in meinem user-control.
Dieser mich daran hindert, das routing, das KeyDown-Ereignis eines jeden Kindes kontrollieren, um meine user-control.
Natürlich ist es wichtig, zu entfernen Sie den Ereignis-handler, wenn Sie entladen Ihre Benutzer-Kontrolle.
Ich hoffe, dies hilft den Menschen, die vor einem ähnlichen problem.
Enter
ruft eine Methode in der formInformationsquelleAutor Skalli
Können Sie hinzufügen folgende Methode zu Ihrem
usercontrol
:InformationsquelleAutor Masoud
vielleicht sollten Sie behandeln alle Veranstaltungen lokal und im Feuer dummy-Ereignisse für die Kommunikation mit dem Haupt-control?
oder vielleicht kann ein Fokus-Problem; wenn es viele untergeordnete Steuerelemente und nur einer von Ihnen ist konzentriert, die anderen würden nicht reagieren, dann die Taste die Aktion.
vielleicht könnten Sie schreiben einige code-Schnipsel hier, um sicher zu sein.
InformationsquelleAutor emredog
Hier ist ein Beispiel, die Schleife werfen jedes Steuerelement in das Formular ein, befestigen Sie das KeyDown-Ereignis. Es ist wie die previouly Antwort in diesem post, aber mit mehr Fällen:
InformationsquelleAutor Samuel
Habe ich einen trick.
UcBase
Erben vonUserControl
UcSub1
undUcSub2
Erben vonUcBase
.UcSuperClass
Erben vonUcBase
zu.UcSub1
,UcSub2
Verwendung innerhalbUcSuperClass
.Ich verrückt
UcSub1
undUcSub2
aufrufenProcessCmdKey
.Code:
InformationsquelleAutor Kim Ki Won