HOWTO · Csharp
C# でキーを押すことをシミュレートする
この記事では、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が押されたとき。