Entwickler-Ecke
WinForms - Key Press Arrow Keys
theLodibach - Fr 18.11.11 18:07
Titel: Key Press Arrow Keys
Hallo, meine Frage bezieht sich auf die Tastenerkennung bei einer Windows Form.
Mein Programm soll per Pfeiltastendruck Controls auf der Form verschieben.
Das habe ich mit dem KeyDown Event auch schon geschafft. Jedoch kann man beim KeyDown Event mehrere Tasten gleichzeitig drücken. Dies verhindert die weiterführung meines Programms. Ich will erreichen, dass nur das Drücken von einer Pfeiltaste möglich ist. Bzw verhindern das mein Programm auf andere Tasten reagiert, solange eine Taste gedrückt ist.
Danke im Vorraus
Lodibach
Th69 - Fr 18.11.11 18:47
Hallo und :welcome:,
das liegt an der generellen Windows-Messageverarbeitung (dort wird anderen Tasten eine höhere Priorität als den Pfeiltasten zugeordnet). Dies kannst du mit jedem beliebigen Programm testen (z.B. Notepad, Word etc.).
Eine Alternative wäre die Verwendung der WinAPI-Funktion GetAsyncKeyState.
Diese Funktion habe ich z.B. bei meinem kleinen Spiel
FastDriver [
http://www.c-sharp-forum.de/viewtopic.php?t=103992] schlussendlich auch eingesetzt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| using System; using System.Runtime.InteropServices; using System.Windows.Forms;
namespace Utilities { static class WinAPI { [DllImport("user32.dll")] static extern short GetAsyncKeyState(Keys vKey);
static public bool IsKeyDown(Keys key) { return (GetAsyncKeyState(key) & 0x8000) != 0; } } } |
Die Methode IsKeyDown müßtest du dann allerdings in einem Timer aufrufen.
theLodibach - So 20.11.11 14:51
Danke für die Hilfe.
Kostet das viele Resourcen, wenn dauernd ein Timer im Hintergrund läuft?
EDIT:
Ich habs ausprobiert. Diese Möglichkeit verhindert den oben genannten Effekt leider auch nicht.
Gibt es noch andere Wege?
theLodibach - So 20.11.11 19:19
Okay, ich hab das Problem gelöst.
Hab einfach mit nem boolean gearbeitet und den false gesetzt wenn eine Taste geedrückt wurde.
Trotzdem danke ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!