我想用 C# 语言创建一个会计程序。 我想使用条形码阅读器在商店中搜索产品(这对我的程序来说是可选的) 现在,如果卖家使用条形码阅读器,则在主要形式中获取处理方法或事件的条形码值; 如何在处理方法或事件的表单(无文本框)背景中获取条形码值?
注意:我的条码阅读器是HID(USB接口(interface))
最佳答案
条形码设备的行为类似于键盘。当您在文本框中获得焦点时,它会将字符发送到文本框,就像您从键盘输入它们一样。
如果您不想使用文本框,则需要订阅键盘事件处理程序来捕获条码流。
Form1.InitializeComponent():
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
处理程序和支持项:
DateTime _lastKeystroke = new DateTime(0);
List<char> _barcode = new List<char>(10);
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
// check timing (keystrokes within 100 ms)
TimeSpan elapsed = (DateTime.Now - _lastKeystroke);
if (elapsed.TotalMilliseconds > 100)
_barcode.Clear();
// record keystroke & timestamp
_barcode.Add(e.KeyChar);
_lastKeystroke = DateTime.Now;
// process barcode
if (e.KeyChar == 13 && _barcode.Count > 0) {
string msg = new String(_barcode.ToArray());
MessageBox.Show(msg);
_barcode.Clear();
}
}
您必须跟踪“击键”并留意通过条形码流发送的“回车”。这可以很容易地在数组中完成。要区分用户击键和条形码击键,您可以使用的一个肮脏技巧是跟踪击键的时间。
例如,如果您收到以回车结束的间隔小于 100 毫秒的击键流,您可以假定它是条形码并进行相应处理。
或者,如果您的条码扫描仪是可编程的,您也可以发送特殊字符或序列。
关于c# - 获取条码读取器值表单后台监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850050/