带有键盘快捷键的菜单



我正在Windows Mobile 6上开发应用程序(使用紧凑的框架)。该应用程序使用条形码扫描仪。我想在菜单中实现键盘快捷键。我在菜单中实现了一个按键事件,这样,如果用户按下1,第一个菜单项就会打开,依此类推。但我的问题是,如果用户在应用程序位于菜单中时用设备扫描条形码,应用程序就会得到扫描仪读取的条形码,并将其转换为按键。由于我在子菜单中也实现了键盘快捷键,这意味着如果用户扫描菜单中的条形码,应用程序就会在菜单之间移动。

我不能100%确定,但我使用的设备似乎有条形码阅读器作为"键盘楔",当它们是这种类型的时,你会从中获得文本,就好像用户在键盘上打字一样。

菜单中的按键就是这样实现的:

private void mainList_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case (char)Keys.D1:
productRequestBtn_Click(sender, e);
break;
case (char)Keys.D2:
warehouseBtn_Click(sender, e);
break;
case (char)Keys.D3:
inventoryBtn_Click(sender, e);
break;
case (char)Keys.D4:
ordersBtn_Click(sender, e);
break;
case (char)Keys.D5:
discountBtn_Click(sender, e);
break;
case (char)Keys.D6:
intakeBtn_Click(sender, e);
break;
case (char)Keys.F1:
Close();
break;
}
}

我尝试了不同的方法来实现它,但都没能解决我的问题。

如果有人知道如何更改菜单中实现的键盘快捷键、阻止条形码读取器或任何可能在所描述的情况下工作的方法,我将非常感激

是的,使用条形码扫描仪sdk将是最好的解决方案。

如果想避免对OEM特定的东西进行编码,您可以使用键盘楔位置和/或前置设置来解决问题。

如果不是所有的楔形实现都支持在扫描数据之前和之后添加序列,这可以被称为前导码和后置码。使用此功能,您可以更改代码,例如,如果和按键以*开头,以#结尾,则可以忽略和按键。如果是这样,只需在设备的楔形设置中添加*作为前导码和#作为后同步码。使用这种技术,在继续验证/处理条形码数据之前,您必须删除条形码输入字段中的字符。

最新更新