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

5

我有一个条形码扫描器和一个带有更改文本事件的文本框。我的目标是,当用户扫描代码时,它会进入文本框,然后我有一些执行SQL操作的代码(它可以正常工作)。问题在于,由于更改文本事件,文本框仅接受代码的第一个字符而不是整个字符串。

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

有没有什么解决办法?

4个回答

8
您可以配置您的条码阅读器,在扫描条形码后"添加回车键"或"添加制表符键"。然后,您可以按如下方式使用它。
private void txtBarcode_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
   if (e.KeyCode == Keys.Enter)
   {
       //Do Something
   }
}

3

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

如果代码长度不固定,则可能需要更聪明一些。

  • 也许您可以使用焦点更改事件而不是文本更改事件,以便在文本框失去焦点之前不运行数据库操作。
  • 编程条形码扫描仪将某个字符附加到字符串的末尾,并推迟数据库操作,直到收到该字符。
  • 使用计时器延迟数据库操作。例如,也许您知道整个代码将在500ms内输入。只需等待500ms并放弃文本更改事件即可。

1

大多数条形码扫描器都可以在扫描数据的结尾添加一个按键序列。许多扫描器使用的是CRLF。您可以在文本框的keypress事件上监听此操作,然后使用它来运行SQL代码。

摩托罗拉扫描器通常有一个快速启动指南,其中包含用于设置此功能的条形码扫描。


也许在程序中有其他的解决方法?扫描仪是学校的,我不允许更改任何内容,而且我对扫描仪了解不太多。 - origin origin2

1
我几年前也做过同样的事情。首先检查您的读者是否在实际的条形码字符串之后发送最终回车符。通常,随着读者一起提供了某些条形码,您可以使用它来配置设备。
如果您的设备不太幸运,请将事件实现异步化,并在运行SQL之前等待200ms。然后,如果等待时间内引发了另一个事件,请更改用于搜索的字符串或仅中止旧事件并创建新事件。
这应该可以工作,因为条形码是通过I/O以高速(肯定少于200ms)推送字符序列的键盘。
我希望这会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接