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

时间:2017-08-29 20:07:53

标签: c# windows winforms keyboard-events

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

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

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

有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

表单包含一个名为“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事件处理程序。否则,你正在寻找像全局keyhook这样的东西,这要复杂得多。