Laden...

[erledigt] Das Button_KeyDown Event ignoriert Druck auf die Pfeiltasten

Erstellt von Jonas007 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.292 Views
J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 3 Jahren
[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

16.833 Beiträge seit 2008
vor 3 Jahren

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

[Hinweis] Wie poste ich richtig?

J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 3 Jahren

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

B
22 Beiträge seit 2018
vor 3 Jahren

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 😉

4.939 Beiträge seit 2008
vor 3 Jahren

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.

J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 3 Jahren

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 😃

4.939 Beiträge seit 2008
vor 3 Jahren

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.

J
Jonas007 Themenstarter:in
37 Beiträge seit 2020
vor 3 Jahren

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