【发布时间】:2013-03-05 21:05:50
【问题描述】:
我知道这个问题已被问过数百次,但我一直无法找到对我有帮助的解决方案。我正在使用条形码扫描仪,我希望能够获取仅使用 keydown 事件键入的键。出于某种原因,我不能同时使用 keydown 和 keypress 事件(我的 keypress 事件不会运行)。
我需要能够获取字符,包括连字符、大写字母和点,还需要检测回车键。
这些是我的听众:
form.KeyDown += new KeyEventHandler(Input_KeyDown);
form.KeyPress += new KeyPressEventHandler(Input_KeyPress);
这些是我的方法:
private void TimedOut(object sender, EventArgs e)
{
_barcode = "";
}
private void Input_KeyDown(object sender, KeyEventArgs e)
{
_timer.Stop();
_timer.Start();
if (e.KeyData == Keys.Enter)
{
if (!_barcode.Equals(""))
{
this.BarcodeScanned(_barcode, new EventArgs());
}
}
else
{
}
}
private void Input_KeyPress(object sender, KeyPressEventArgs e)
{
_timer.Stop();
_timer.Start();
_barcode += e.KeyChar;
}
【问题讨论】:
-
到目前为止您尝试过什么?你有什么代码来证明你的工作?你看过KeyEventArgs类了吗?
-
显示当前的 KeyPress 事件肯定会有所帮助,我们需要查看您是否正确检查了键的字符并检查以确保两台机器上的区域设置设置相同/环境
-
您是否尝试在单击光标键后对其进行检测?你到底想完成什么-
-
我正在尝试存储字符但也检测回车键。
-
这里的这行
if (e.KeyData == Keys.Enter)不应该是if (e.KeyData == Key.Enter)吗?我也认为应该是if(e.key ==Key.Enter)