打开特定表单时捕获所有键盘输入
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 事件处理程序添加到其中。否则,您正在寻找类似全局键钩的东西,这要复杂得多。
我正在使用 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 事件处理程序添加到其中。否则,您正在寻找类似全局键钩的东西,这要复杂得多。