Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Das Button_KeyDown Event ignoriert Druck auf die Pfeiltasten
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Österreich

Themenstarter:

[erledigt] Das Button_KeyDown Event ignoriert Druck auf die Pfeiltasten

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jonas007 am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.761

beantworten | zitieren | melden

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

[Hinweis] Wie poste ich richtig?
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Brymax
myCSharp.de - Member



Dabei seit:
Beiträge: 22

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.320

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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 :)
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.320

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 37
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Ich habe den Button beim Click Event deaktiviert und das PreviewKeyDown Event benutzt und es klappt. Danke dir!
private Nachricht | Beiträge des Benutzers