Tastendruck Simulieren Klicken auf Eine Schaltfläche in C#
Ok, also ich bin in den Prozess der Herstellung eines Tic-Tac-Toe-Spiel, um mir zu helfen, lernen C#.
Ich bin versucht, fügen Sie ein wenig Funktionalität zu, so dass ich möchte, dass die Leute in der Lage, verwenden Sie den Ziffernblock auf einem computer zu simulieren, klicken auf die Schaltflächen.
Hier ist, was ich habe, aber wenn ich den NumPad die Tasten nicht klicken.
Können Sie 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);
}
}
InformationsquelleAutor Cistoran | 2009-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN
Gemerkt, dass ich, klarer zu werden über das, was ich meine...
Aus dem code, den Sie geschrieben ich vermute, Sie haben 9-Steuerelemente haben Sie Ihren key-Ereignisse zu. Diese Steuerelemente werden nur angezeigt, Schlüssel-Ereignisse aus, wenn Sie konzentriert sind.
Behandeln keys weltweit für das Formular verwenden, müssen Sie die
Form.KeyPreview
zutrue
. Auch, würde ich nicht mit den Tasten wie Sie es tun, aber fügen Sie eineForm.KeyDown
Ereignis und schreiben Sie etwas wie:Diese mit den NumPad-Tasten in der Formular - Sie können dann entfernen Sie alle event-Handler, die Sie geschrieben in deiner Frage.
Programmatisch zu "klicken" einer Schaltfläche, die Sie verwenden sollten, die
Button.PerformClick()
Methode, als mehr als ein event-handler Hinzugefügt werden kann, klicken Sie auf die Veranstaltung, die nicht genannt werden sonst.EDIT 2
Syntax für die
switch
-Anweisung ungültig war. Natürlich ist jeder "Fall" muss beginnen mit dercase
Stichwort... Jetzt sollte es funktionieren.Einfach in den Eigenschaften des Formulars (Eigenschaften-Fenster). Im Eigenschaften-Fenster ändern Sie die Ansicht der events-Sektion, Blick für das KeyDown-Ereignis und doppelklicken Sie auf das Element. Dies fügt ein neues Ereignis Form_KeyDown, um Ihren code, wo du meinen code. Alternativ fahren Sie mit der form der source-code, und geben Sie "überschreiben" - von der Code-Insight-Fenster, wählen Sie die "OnKeyDown" - Methode. Ein stub ist für Sie generiert. Nach dem "base".OnKeyDown" - Zeile hinzufügen mein code.
Ich habe gerade versucht, und ich fürchte, es funktioniert immer noch nicht. Ich bekomme ein paar Fehler schrumpfte aus, wenn ich ersetzt die : mit ; Die wichtigsten sind. Keine einschließende Schleife die break-oder continue(diese sind von der Pause;) Nur die Zuordnung, call -, increment -, decrement, und neue Objekt-Ausdrücke können verwendet werden, als eine Aussage. (x3) (bekomme ich diese auf die Tasten.NumPad und auf die schließende Klammer von switch.
UPS, sorry, falsche syntax für die switch-Anweisung in meinem Beispiel. Ich werde aktualisieren, meine Antwort.
InformationsquelleAutor Thorsten Dittmar
Müssen Sie
button1.PerformClick();
für jede Schaltfläche zum aufrufen Ereignis richtig, hier ist info.InformationsquelleAutor terR0Q