C# でキーを押すことをシミュレートする
この記事では、C# でキーを押すことをシミュレートするための迅速で簡単なアプローチを示します。
テスト中に、押された一連のボタン(キーストローク)を選択したオブジェクト(コントロールまたはウィンドウ)に送信する必要がある場合があります。選択したコントロールまたはウィンドウにキーコードを送信することにより、キーワードテストおよびスクリプトからのキーストロークをシミュレートできます。
C#
でフォームアプリケーションを作成する
まず、VisualStudio で新しい Windows フォームアプリケーションを作成します。
.cs
デザインファイルを開き、numberLabel
という名前のラベルを作成し、"Text To Be Displayed"
にできるテキストを割り当て、中央に配置してきれいに見えるようにします。
numPadButton
と alphabetButton
を作成し、両方のボタンに"Click Me"
テキストを追加しましょう。numPadButton
をダブルクリックすると、numPadButton_Click
関数に移動します。
この関数内で、numberLabel
にテキストを割り当てます。このテキストは、割り当てるキーを押すと表示されます。
private void numPadButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Numpad Button 0 Pressed";
}
alphabetButton
でも同じ手順を実行します。alphabetButton_Click
関数内で、numberLabel
にいくつかの異なるテキストを割り当てます。このテキストは、押された別のキーで表示されるためです。
private void alphabetButton_Click(object sender, EventArgs e) {
numberLabel.Text = "Enter Pressed";
}
出力:
キーボードイベントがフォームに登録されているかどうかを判断するフォームの KeyPreview
機能を有効にする必要があります。したがって、フォーム全体をクリックし、右側のプロパティパネルから、KeyPreview
値を true に設定します。
次に、keypress イベントを識別して処理する KeyDown
イベントが必要です。これを追加するには、プロパティパネルに移動し、稲妻の記号が付いた[イベント]タブを開きます。KeyDown
イベントまで下にスクロールして、それをダブルクリックします。
Form1_KeyDown()
メソッドを作成し、このメソッドに移動します。このメソッドは、タイプ object
の sender
とタイプ KeyEventArgs
のイベント e
の 2つの引数を取ります。
private void Form1_KeyDown(object sender, KeyEventArgs e) {}
次に、ボタンのクリックを使用して、特定のキーの押下を模倣する必要があります。この関数はプッシュされたキーを受け取り、受け取ったキーが NumPad0
であるかどうかを確認してから、numPadButton
をクリックします。
if (e.KeyCode == Keys.NumPad0) {
numPadButton.PerformClick();
}
alphabetButton
では、同じプロセスに従う必要があります。したがって、[イベント]タブで、KeyUp
イベントをダブルクリックし、Form1_KeyUp()
関数内で、受信したキーがEnterであるかどうかを確認してから、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) {}
}
}
出力:
キーボードからテンキー0を押したとき。
キーボードからEnterが押されたとき。
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