在 C# 中模擬按鍵
本文演示了一種在 C# 中模擬按鍵的快速而直接的方法。
在測試期間,你可能需要將一系列按下的按鈕(擊鍵)傳輸到所選物件 - 控制元件或視窗。你可以通過將鍵程式碼傳輸到所選控制元件或視窗來模擬來自關鍵字測試和指令碼的擊鍵。
在 C# 中建立表單應用程式
首先,在 Visual Studio 中建立一個新的 Windows 窗體應用程式。
開啟你的 .cs
設計檔案並建立一個名為 numberLabel
的標籤,併為其分配一些可以是 "Text To Be Displayed"
的文字,將其對齊設定為 Middle Center 以看起來乾淨。
讓我們建立 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。
然後,我們需要一個 KeyDown
事件來識別和處理按鍵事件,要新增它,請轉到屬性面板並開啟帶有閃電符號的事件選項卡。向下滾動到 KeyDown
事件並雙擊它。
它將建立一個 Form1_KeyDown()
方法並將你導航到該方法。這個方法有兩個引數,一個 object
型別的 sender
和一個 KeyEventArgs
型別的事件 e
。
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)
{
}
}
}
輸出:
當從鍵盤按下 Numpad 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