Simulieren einen Tastendruck in C#
Dieser Artikel zeigt einen schnellen und unkomplizierten Ansatz zum Simulieren eines Tastendrucks in C#.
Während des Testens müssen Sie möglicherweise eine Folge von gedrückten Schaltflächen (einen Tastendruck) an das ausgewählte Objekt - ein Steuerelement oder ein Fenster - übertragen. Sie können Tastenanschläge aus Schlüsselworttests und Skripten simulieren, indem Sie Tastencodes an das ausgewählte Steuerelement oder Fenster übertragen.
Erstellen eine Formularanwendung in C#
Erstellen Sie zunächst eine neue Windows Form-Anwendung in Visual Studio.
Öffnen Sie Ihre .cs
-Designdatei und erstellen Sie ein Etikett mit dem Namen numberLabel
und weisen Sie ihm einen Text zu, der "Text To Be Displayed"
sein kann, und stellen Sie seine Ausrichtung auf Middle Center ein, um sauber auszusehen.
Lassen Sie uns numPadButton
und alphabetButton
erstellen und den Text "Click Me"
zu beiden Schaltflächen hinzufügen. Doppelklicken Sie auf Ihren numPadButton
, wodurch Sie zur numPadButton_Click
-Funktion navigiert werden.
Weisen Sie innerhalb dieser Funktion dem numberLabel
einen Text zu. Dieser Text wird angezeigt, sobald die von uns zugewiesene Taste gedrückt wird.
private void numPadButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Numpad Button 0 Pressed";
}
Führen Sie die gleichen Schritte mit dem alphabetButton
durch. Weisen Sie innerhalb der Funktion alphabetButton_Click
dem numberLabel
einen anderen Text zu, da dieser Text auf einer anderen gedrückten Taste angezeigt wird.
private void alphabetButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Enter Pressed";
}
Ausgabe:
Wir müssen die KeyPreview
-Funktionalität für unser Formular aktivieren, die bestimmt, ob die Tastaturereignisse mit dem Formular registriert werden oder nicht. Klicken Sie also auf das gesamte Formular und setzen Sie im Eigenschaftenbereich auf der rechten Seite den Wert KeyPreview
auf true.
Dann brauchen wir ein KeyDown
-Ereignis, das das Tastendruckereignis identifiziert und verarbeitet, und um es hinzuzufügen, gehen Sie zum Eigenschaftenfenster und öffnen Sie die Registerkarte Ereignisse mit einem Blitzsymbol. Scrollen Sie nach unten zum Ereignis KeyDown
und doppelklicken Sie darauf.
Es erstellt eine Form1_KeyDown()
-Methode und navigiert Sie zu dieser Methode. Diese Methode akzeptiert zwei Argumente, einen sender
vom Typ object
und ein Ereignis e
vom Typ KeyEventArgs
.
private void Form1_KeyDown(object sender, KeyEventArgs e) {}
Nun müssen wir mit dem Button-Klick das Drücken einer bestimmten Taste imitieren. Diese Funktion empfängt die gedrückte Taste, und wir überprüfen, ob die empfangene Taste NumPad0
ist, und führen dann den Klick auf numPadButton
aus.
if (e.KeyCode == Keys.NumPad0) {
numPadButton.PerformClick();
}
Mit dem alphabetButton
müssen wir den gleichen Prozess befolgen. Doppelklicken Sie also auf der Registerkarte Event
auf das Ereignis KeyUp
und prüfen Sie in der Funktion Form1_KeyUp()
, ob die empfangene Taste Enter ist, und klicken Sie dann auf alphabetButton
.
using System;
namespace SimulateKeyPress {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void numPadButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Numpad Button 0 Pressed";
}
private void alphabetButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Enter Pressed";
}
private void Form1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.NumPad0) {
numPadButton.PerformClick();
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter) {
alphabetButton.PerformClick();
}
}
private void numberLabel_Click(object sender, EventArgs e) {}
}
}
Ausgabe:
Wenn das Numpad 0 auf der Tastatur gedrückt wird.
Wenn die Enter auf der Tastatur gedrückt wird.
I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.
LinkedIn