【问题标题】:Capture all Keyboard input when specific form is open打开特定表单时捕获所有键盘输入
【发布时间】:2017-08-29 20:07:52
【问题描述】:

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

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

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

有人知道怎么做吗?

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow!当询问有关由您的代码引起的问题的问题时,如果您提供人们可以用来重现问题的代码,您将获得更好的答案。请参阅stackoverflow.com/help/mcve 以帮助您创建一个最小、完整且可验证的示例。
  • 只是出于好奇,您是如何寻找一种方法来捕获您没有找到任何答案的键盘输入的?搜索这个网站会出现一些...stackoverflow.com/search?q=capture+keyboard+input.

标签: c# windows winforms keyboard-events


【解决方案1】:

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#
  • 很高兴它有帮助!如果您发现代码有用,我们将不胜感激。
  • 我试图接受它,但由于我刚刚创建了我的帐户,我似乎没有足够的声誉来评价它!
  • 您将使用复选框来接受,而不是使用上下箭头。如果你不能让它工作,不用担心。无论哪种方式,我都很乐意提供帮助!祝你好运。
猜你喜欢
  • 2011-10-01
  • 2020-01-28
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多