C# 条形码扫描器和文本框更改事件

C# barcode scanner and textbox with changed event

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

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

这附近有什么吗?

大多数条码扫描仪都能够在扫描数据的末尾添加按键序列。许多人只是简单地使用 CRLF。您可以在文本框中的按键事件中收听此内容,然后将其用于 运行 您的 SQL 代码。

摩托罗拉扫描仪通常有一个快速入门指南,其中包含要扫描的条码以进行设置。

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

如果代码是可变长度的,那么你可能要聪明一些。

  • 也许你可以使用焦点改变事件代替文本改变事件,这样数据库操作就不会运行直到文本框失去焦点。
  • 对条形码扫描器进行编程,将特定字符附加到字符串的末尾并推迟数据库操作,直到您收到该字符。
  • 使用计时器延迟数据库操作。例如,您可能知道整个代码将在 500 毫秒内输入。只需等待 500 毫秒,然后放弃文本更改事件。

几年前我也这样做过。 首先检查您的 reader 是否在实际条形码字符串之后发送最后一个回车符 return 字符。 通常与 reader 一起,您有特定的条形码可用于配置设备。

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

这应该可行,因为条形码是一个键盘,它以高速(肯定少于 200 毫秒)通过 I/O 推送字符序列。

希望对您有所帮助。

扫描条码后,您可以将条码reader配置为"Add an enter key"或"Add a tab key"。 然后你就可以使用它了。

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