2

私のバーコード リーダーは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);    
     }
 }

グーグルで検索した後、この記事を見つけて、アプリケーションに実装しようとしました。しかし、今の問題は、値が二重文字で返されることです。文字列が 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();
         }
      }

問題を解決するためのアドバイスが必要

4

1 に答える 1

3

以下の行をコメントするだけです

//this.KeyPress += 新しい System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);

于 2013-07-04T16:58:48.280 に答える