Wie kann ich die Zeichenwiederholungsverzögerung in C # beseitigen?

http://www.microsoft.com/windowsxp/using/accessibility/characterrepeatrate.mspx - In Windows gibt es eine Option zum Einstellen der Wiederholungsverzögerung. Dies bedeutet die Verzögerung zwischen dem ersten und dem anderen Tastendruck, wenn einer die Taste gedrückt hält. Ich erstelle eine Art Spiel und muss dieses "Feature" loswerden.

Bisher habe ich es geschafft, diese Methode zu finden:



[DllImport("user32.dll")]
static extern ushort GetAsyncKeyState(int vKey);

public static bool IsKeyPushedDown(Keys keyData)
{
   return 0 != (GetAsyncKeyState((int)keyData) & 0x8000);
}

Aber die Methode IsKeyPushedDown findet heraus, ob die Taste IM MOMENT des Aufrufs der Funktion gedrückt wird - also brauche ich eine Schleife, um zu testen, ob die Taste gedrückt ist. Das Problem ist, dass es immer noch nicht alle Tastenanschläge abfängt - ich glaube, ich habe eine zu langsame Schleife.

Die zweite Wahl überschreibt ProcessCmdKey:


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
  // processing keys
            if (keyData == Keys.Left || keyData == Keys.Right || keyData == Keys.Up || keyData == Keys.Down)
            {
                return true;
            }
            else
            {
                return base.ProcessCmdKey(ref msg, keyData);
            }

}

Das funktioniert wirklich gut, ist aber mit einer Wiederholungsverzögerung behaftet und daher ist die Bewegung meines Monsters in meinem Spiel so:

Gibt es eine Lösung für mein Problem? Vielen Dank

EDIT: Ich habe das Problem durch die Kombination beider Verfahren gelöst. Aber es ist eine sehr hässliche Lösung. Ich hoffe immer noch, dass es eine bessere Lösung gibt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage