Ich fahre fort, eine Art Tastaturnavigation in meinem einfachen Grafikprogramm (mit C#) zu programmieren. Und ich geriet erneut in Schwierigkeiten.Panel nicht Fokus bekommen
Mein Problem ist, dass ich die Tastatureingabe verarbeiten will um eine Schicht zu bewegen. Das Verschieben der Ebene mit der Maus funktioniert bereits ganz gut, aber das Steuerelement erhält den Fokus nicht (weder KeyUp/KeyDown/KeyPress noch GotFocus/LostFocus wird für dieses Steuerelement ausgelöst). Da meine Klasse von Panel abgeleitet ist (und ein paar Ereignisse überschreibt), habe ich auch die oben erwähnten Ereignisse überschrieben, aber ich kann diese Ereignisse nicht auslösen.
Ich denke, ich könnte es schaffen, Tastaturantwort entweder mit etwas wie Keyboard.GetState() oder ProcessCmdWnd oder etwas zu implementieren. Allerdings: Ich muss noch sagen können, wann die Kontrolle den Fokus hat.
Gibt es eine mehr oder weniger elegante Möglichkeit, diese Fähigkeit einem Benutzersteuerelement hinzuzufügen (das auf Panel basiert)?
Ich habe viele Themen hier überprüft und ich könnte this approach für Tastatureingabe verwenden. Das Fokusproblem bleibt jedoch bestehen.
Vielen Dank für Informationen im Voraus!
Igor.
ps. .: Ich programmiere in C# .NET v3.5, mit VS2008. Es ist eine Windows.Forms-Anwendung, nicht WPF.
Amazing! Es funktioniert wirklich und es war so einfach zu implementieren. Ich kannte die ControlStyles-Klasse nicht und wusste daher nicht, dass ich das ändern konnte. Vielen Dank :). – Igor
@HansPassant In welchen Fällen sollte man 'Focus()' statt 'Select()' genau benutzen? – Medinoc
Eine richtige Antwort ist eine lange, verwenden Sie bitte die Schaltfläche Frage stellen. –