带有已更改事件的C#条形码扫描仪和文本框

带有已更改事件的C#条形码扫描仪和文本框,c#,textbox,barcode,C#,Textbox,Barcode,因此,我有条形码扫描仪和文本框与改变的文本事件。我想做的是,当用户扫描代码时,它会进入文本框,然后我有了执行一些SQL的代码(它工作正常)。问题是,由于文本事件的更改,texbox只接受代码的第一个字符,而不接受整个字符串 我想这样做,因为这样用户就不需要按任何其他按钮来插入产品。 我试图捕获条形码,将其保存到字符串中,但这也不起作用 这有什么办法吗?大多数条形码扫描仪都能够在扫描数据的末尾添加密钥序列。许多人只是使用CRLF。您可以在文本框中的keypress事件中侦听该消息,然后使用该消息运

因此,我有条形码扫描仪和文本框与改变的文本事件。我想做的是,当用户扫描代码时,它会进入文本框,然后我有了执行一些SQL的代码(它工作正常)。问题是,由于文本事件的更改,texbox只接受代码的第一个字符,而不接受整个字符串

我想这样做,因为这样用户就不需要按任何其他按钮来插入产品。 我试图捕获条形码,将其保存到字符串中,但这也不起作用


这有什么办法吗?

大多数条形码扫描仪都能够在扫描数据的末尾添加密钥序列。许多人只是使用CRLF。您可以在文本框中的keypress事件中侦听该消息,然后使用该消息运行SQL代码


motorola扫描仪通常有一个快速入门指南,其中包含要扫描的条形码以设置此设置。

如果代码的长度始终相同,您可以在文本更改事件中检查长度,并推迟数据库操作,直到代码的长度正确为止

如果代码长度可变,那么您可能需要更加聪明

  • 也许可以使用焦点更改事件而不是文本更改事件,以便在文本框失去焦点之前不会运行数据库操作
  • 对条形码扫描器进行编程,将某个字符附加到字符串的末尾,并推迟数据库操作,直到收到该字符为止
  • 使用计时器延迟数据库操作。例如,您可能知道整个代码将在500毫秒内输入。只需等待500毫秒,然后放弃文本更改事件
    • 我几年前也是这样做的。 首先,检查阅读器是否在实际条形码字符串之后发送最终回车字符。 通常,与读卡器一起,您可以使用特定的条形码来配置设备

      如果您对设备不满意,请使事件实现异步,并在运行SQL之前等待200毫秒。 如果等待时间引发了另一个事件,请更改用于搜索的字符串,或者中止旧事件并创建一个新事件

      这应该是可行的,因为条形码是一个键盘,它以高速(肯定小于200ms)将字符序列推送到I/O中


      我希望这会有所帮助。

      扫描条形码后,您可以将条形码阅读器配置为“添加输入键”或“添加标签键”。 然后你可以使用它如下

      private void txtBarcode_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
      {
         if (e.KeyCode == Keys.Enter)
         {
             //Do Something
         }
      }
      

      也许在这个程序中还有其他的解决方法?扫描仪是从学校来的,我不允许改变任何东西+我真的不太了解扫描仪