Keypress zum Simulieren A-Knopf Klicken Sie in C #
Frage
Ok, so bin ich in dem Prozess ein Tic-Tac-Toe-Spiel macht mir C # zu helfen, lernen. Ich versuche, ein wenig Funktionalität, um es hinzuzufügen, so möchte ich die Menschen die NumPad auf einem Computer zu verwenden, um der Lage sein, um die Tasten zu simulieren klicken.
Hier ist, was ich habe, aber wenn ich die NumPad die Tasten verwenden, klicken Sie nicht. Kann jemand von euch einen Grund sehen, warum?
//===============================
// start NumPad Simulate Clicks
// NumPad MyButtons
// 7 8 9 1 2 3
// 4 5 6 4 5 6
// 1 2 3 7 8 9
//===============================
public void myControl_NumPad7(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad7)
{
button1_Click(null, null);
}
}
public void myControl_NumPad8(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad8)
{
button2_Click(null, null);
}
}
public void myControl_NumPad9(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad9)
{
button3_Click(null, null);
}
}
public void myControl_NumPad4(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad4)
{
button4_Click(null, null);
}
}
public void myControl_NumPad5(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad5)
{
button5_Click(null, null);
}
}
public void myControl_NumPad6(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad6)
{
button6_Click(null, null);
}
}
public void myControl_NumPad1(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad1)
{
button7_Click(null, null);
}
}
public void myControl_NumPad2(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad2)
{
button8_Click(null, null);
}
}
public void myControl_NumPad3(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad3)
{
button9_Click(null, null);
}
}
Lösung
Bearbeiten
Bemerkt, dass ich sein klarer, was ich meine ...
Aus dem Code, den Sie geschrieben Ich vermute, Sie haben 9 steuern Sie Ihre Schlüssel-Ereignisse hinzugefügt. Diese Kontrollen werden nur Schlüssel-Ereignisse erhalten, wenn sie fokussiert sind.
Um Tasten global für die Form handhaben, müssen Sie Form.KeyPreview
einstellen true
. Auch ich würde nicht die Tasten, um die Art und Weise behandeln Sie tun, aber ein Form.KeyDown
Ereignis hinzufügen und schreiben so etwas wie:
switch (e.KeyCode)
{
case Keys.NumPad9:
e.Handled = true;
button3.PerformClick();
break;
case Keys.NumPad8:
e.Handled = true;
button2.PerformClick();
break;
// And so on
}
Das wird die NumPad-Keys in Form handhaben -. Sie dann alle Event-Handler entfernen können Sie in Ihrer Frage gestellt
Um programmatisch „Klick“ eine Schaltfläche, sollten Sie die Button.PerformClick()
Methode verwenden, da mehr als einen Event-Handler kann das Click-Ereignis hinzugefügt werden, die sonst nicht genannt werden würden.
EDIT 2
Syntax für die switch
-Anweisung war ungültig. Natürlich jeder „Fall“ muss es mit dem case
Stichwort beginnen ... Nun sollte funktionieren.
Andere Tipps
Sie müssen für jede Taste Ereignis button1.PerformClick();
richtig verwenden aufzurufen, hier ist info .