4

如何在 C# 应用程序的后台读取条形码文本?我用谷歌搜索,但它没有用。而stackoverflow上的其他资源并不接近我需要的。我想在后台读取条形码。我想知道数据是来自条形码还是键盘。如果数据来自条形码,那么即使文本框被突出显示,它也不能显示在文本框上。我得到了 stackoverflow 的类似代码,但如果窗口中存在文本框,则文本框将包含条形码数据;我不想要。链接:后台监控获取条码阅读器值

    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();
        }
    }
4

2 回答 2

3

大多数条形码扫描仪只是充当键盘输入,快速/简单的解决方法是放置一个“看不见”的文本框。一个例子是这样的:

// Pseudo code (could be Web, Windows etc)
public void Form1_Load()
{
    txtBarcodeScanner.Top = -10000;
    txtBarcodeScanner.Left = -10000;
    txtBarcodeScanner.Width = 10;
    txtBarcodeScanner.Height = 10;
    txtBarcodeScanner.Focus();
}

这样,输入可以被捕获txtBarcodeScanner但不可见,条形码不会被捕获但会触发KeyDown等。

于 2013-07-04T17:01:39.833 回答
1

条码设备,如键盘。

1 输入条形码时,按 f12

2 插入条形码后按回车

private void textbox_Keydown(object sender, KeyEventArgs e)
{
   if(e.KeyCode == Keys.F12){
    Textbox.Focus();
   }
   if(e.KeyCode == Keys.Enter){
     /// after enter barcode
     /// save 
   }

}
于 2017-12-13T14:49:21.907 回答