Laden...

[erledigt] Das Button_KeyDown Event ignoriert Druck auf die Pfeiltasten

Letzter Beitrag vor 4 Jahren 8 Posts 1.389 Views
[erledigt] Das Button_KeyDown Event ignoriert Druck auf die Pfeiltasten

Hallo liebe Community,
Das Button_KeyDown Event erkennt/ignoriert meine Pfeile. Nach ein wenig Recherche habe ich herausgefunden, dass man dieses (unten angeführt) Event benutzen soll und es dann klappt. Jedoch funktioniert es bei mir nicht. Benutze ich das Event falsch? Was kann ich machen damit es funktioniert?


        private void btn_start_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            e.IsInputKey = true;
        }

Beste Grüße
Jonas

Verwende doch wenigstens 10 Sekunden mit Google 😃
Google-Suche nach c# Button_KeyDown arrow

[Hinweis] Wie poste ich richtig?

Wie gesagt, ich habe gegoogelt und bin auf diese Lösungen gekommen jedoch hat alles was ich gefunden habe nicht funktioniert bzw. ich habe mich nicht ausgekannt 😦
Deshalb habe ich hier nochmal auf deutsch nachgefragt ob mir das jemand erklären kann

Hallo Jonas,

anbei ein Link zur MSDN Doku:

Control.PreviewKeyDown Event

Hier steht alles drin. Links unten auf der Seite kannst du sogar die Region auswählen. Wenn du es hier auf Deutsch stellst kommt eine einigermaßen brauchbare Übersetzung dabei rum.

Die Pfeiltasten dienen zur Navigation auf der Form. Daher werden sie von deinem Button ignoriert. Aber nett wie Microsoft ist gibt es dafür eine Lösung:

Punkt 1 hast du erledigt.


private void btn_start_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    e.IsInputKey = true;
}

Durch setzten dieser Eigenschaft wird auch das Event btn_start_KeyDown getriggert.

Und hier kannst du wieder ansetzen 😉

Hallo Jonas 007,

ich nehme mal an, es geht immer noch um das Snake-Spiel.
Warum willst du denn nur bei dem Button die Pfeiltasten abfragen?
Sollen diese nicht für die gesamte Form gelten? Dann einfach KeyPreview = true für die Form setzen und in dessen (Preview)KeyDown-Ereignis die Tastaturabfragen durchführen.

Hallo Th69,

du hast recht es ist noch für das Snake-Spiel. Ich wollte ursprünglich einfach einen Start-Button integrieren da es davor einfach gleich losgestartet ist. Das Problem war dann der Fokus. Ich habe es dann sogar geschafft den Fokus von Button wegzunehmen jedoch hat es trotzdem nicht funktioniert da der Fokus irgendwie nicht auf der Form selbst war. Die Steuerung meiner Snake geht über das Form1_KeyDown Event. Mein provisorischer Plan wäre dann gewesen die Steuerung Button Keydown Event an das Form1_Keydown Event weiterzuleiten. Und dann kam ich an mein nächstes Problem: Die Pfeile wurden nicht erkannt. Diesen provisorischen Plan könnte ich jedoch gleich umgehen, wenn ihr mir helfen könntet 😃

Ich habe dir doch einen Vorschlag gegeben. Alternativ ginge auch noch das Behandeln innerhalb der ProcessCmdKey-Methode.

Aber könntest du nicht einfach den Button beim Click deaktivieren (Enabled = false), so daß es keinen Fokus mehr erhält? Und erst beim Spielende wieder aktivieren.

Ich habe den Button beim Click Event deaktiviert und das PreviewKeyDown Event benutzt und es klappt. Danke dir!