打开特定表单时捕获所有键盘输入

Capture all Keyboard input when specific form is open

我正在使用 C# 开发一个软件,我需要它在特定表单打开时捕获所有键盘输入。

我有一张卡 reader 可以将信息捕获为键盘。 我会打开一个弹出窗口告诉用户通过卡片,然后我需要捕获输入并检查我的数据库是否是有效的卡片。

当表单处于焦点状态时,我找不到捕获键盘输入的方法。

有人知道怎么做吗?

Form 包含一个名为 "KeyPress" 的事件,它可以满足您的要求。单击属性中的小闪电图标以查看您的事件,双击 "KeyPress" 连接该方法。

如果您期望不止一次按键(换句话说,如果您想要一长串代表卡号的数字),您将需要像这样一次存储输入的一个字符:

// add a field to capture the input
string allInput = "";

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    allInput += e.KeyChar; // adds the last character pressed to the string
}

请注意,如果您的注意力集中在文本框之类的东西上,那么文本框将接收 KeyPress 事件,而不是表单。如果表单中的每个控件只有几个,您可以将相同的 KeyPress 事件处理程序添加到其中。否则,您正在寻找类似全局键钩的东西,这要复杂得多。