tastendruck auslesen

Otianer

Mitglied
Hallo leute

Ich habe folgendes problem undzwar hab ich hier in der suche gesucht und auch was gefunden

Aber als ich das dann in meinem quelltext genutzt habe hat es nicht funktioniert und ich frage mich warum hab den quellcode der unten steht auch on alle buttons und pannels eingefügt aber es klappt nicht.

Das Programm soll ein kleines spiel sein man fährt ein auto(button :-D) und muss sich durch ein labyrinth kämpfen das klappt auch alles soweit nur eben die tastatur steuerung nicht:-(

und ich frag mich warum

Hier der quellcode:

Code:
private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            if (e.KeyChar == 'W')
            {
                richtung = "up";
            }
            if (e.KeyChar == 's')
            {
                richtung = "down";
            }
            if (e.KeyChar == 'a')
            {
                richtung = "links";
            }
            if (e.KeyChar == 'd')
            {
                richtung = "rechts";
            }
        }
 
Wenn du Buttons noch auf dem Formular hast geht das normal nicht, weil dann kein KeyPress (...) Ereignis ausgelöst, es sei du hast bei den Buttons Enabeld auf false (allerdings kann man sie dann nicht anklicken...). Mach am besten alle Buttons weg. Du könntest ja dann mit Escape-Taste Pause machen und die Buttons wieder einblenden.

Noch ein Tipp:
Nimm lieber zwei Ereignisse mit KeyDown und KeyUp, wo du dann bool Variablen auf true bzw auf false setzt und dann anahand dieser Variabeln bei jeder Gameloop entsprechend die Geschwindigkeit zuweist. Denn bei KeyPress wird nicht andauernd ein Ereigniss ausgelöst, sondern nur wenn du sie grad gedrückt hast, und dann schließlich nach ein paar Sekunden andauernd.
 
Danke dir.
Jetzt hab ich noch eine frage und zwar wie kann ich die leertaste und enter auslesen denn über KeyChar sind das zuviele zeichen logischerweise sie sollen dann start und stopp sein.
 
Zuletzt bearbeitet:
Wenn du weiterhin KeyPress verwendest, musst du das so schreiben um Enter, usw. einzulesen:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
}
}

Aber wenn du Keydown, ... nutzt:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
{
}
}
 
Zurück