【发布时间】:2016-06-21 09:36:36
【问题描述】:
我正在使用扫描仪向我发送这样的条形码:“¬00111111111112222222”作为按下的键,如 USB 键盘。我所要做的就是在获得前缀“¬”时将焦点设置在 TextBox 上。
现在的问题是,在我的 KeyDown 事件中,KeyEventArgs 是“系统”,而不是我前缀中的字符。有没有办法比较这个标志来设置焦点?
我试过的代码是:
private void KeyDownEvent(object sender, KeyEventArgs e)
{
if (Convert.ToString(e.Key) == "¬")
{
myTextBox.Focus();
}
}
更新: 我现在尝试了 e.SystemKey,此时,我将 LeftAlt 作为 Event 参数。那么也许 AISCII 代码被转换为这个 SystemKey LeftAlt?
更新: 我记录了扫描条形码时得到的所有密钥,我注意到我没有像我想的那样得到 ASCII 码本身。我得到的是使这个符号像“Alt+NumPad0+NumPad7+NumPad2”这样的组合键,所以现在我只需要将它们与“¬”符号中的 ASCII 码匹配,然后它就可以工作了。谢谢大家的帮助..
【问题讨论】:
-
KeyInterop.VirtualKeyFromKey(e.Key);呢? -
您确定您的扫描仪返回的正是 KeyDown 事件吗?通常 KeyEventArgs e 应该包含按下的键的详细信息。 KeyDown 事件如何在没有任何触发器的情况下触发?有什么办法可以得到整个字符串之类的吗?
-
This 可能会帮助你。但你可能会做一些调整
-
我试过你的答案,但我得到的虚拟键是 144,代表 NumLock,此时与键盘上的真正 NumLock 按钮没有区别。所以这很有效。