从条形码阅读器获取数据而不使用文本框

时间:2013-06-13 14:59:47

标签: c# winforms barcode-scanner

我的条形码阅读器是HID类型并使用USB。

我可以在文本框关注时获取数据并执行一些业务逻辑。

 private void Form1_KeyUp(object sender, KeyEventArgs e)
 {
     if (e.KeyValue == (char)Keys.Return)
     {
           e.Handled = true;

           int barcodeLength = textBox1.TextLength;

           textBox1.Select(0, barcodeLength);

           queryData(textBox1.Text);    
     }
 }

在我谷歌之后,我找到了这个article并试图实现我的应用程序。但现在的问题是,价值以双重性质回归。如果string是F1234,它将返回FF11223344,依此类推。

这里是代码

    DateTime _lastKeystroke = new DateTime(0);
    List<char> _barcode = new List<char>(10);

     public Form1()
     {
          InitializeComponent();
          this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
     }

     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());
             queryData(msg);
             _barcode.Clear();
         }
      }

需要建议来解决我的问题

1 个答案:

答案 0 :(得分:2)

只需评论以下内容

// this.KeyPress + = new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);