C# 条码扫描

C# 条码扫描,c#,winforms,barcode-scanner,C#,Winforms,Barcode Scanner,我正在制作一个基本的windows窗体应用程序。其中一个表单上只有一个文本框和按钮。 除此之外,我还有一个sql server数据库。在我的数据库中,有一个表(由ProductID、productName、NoOfStock和Price组成) ProductID是属于真实世界产品的所有条形码,如手膏、糖果等 当我通过条形码从其他控件(如combobox)获取产品详细信息时,没有任何问题。但是 **问题是或者我的问题是**,当我扫描我的条形码时,我可以直接在我的文本框中获取它。获得条形码后,我希望

我正在制作一个基本的windows窗体应用程序。其中一个表单上只有一个文本框和按钮。 除此之外,我还有一个sql server数据库。在我的数据库中,有一个表(由ProductID、productName、NoOfStock和Price组成)

ProductID是属于真实世界产品的所有条形码,如手膏、糖果等

当我通过条形码从其他控件(如combobox)获取产品详细信息时,没有任何问题。但是 **问题是或者我的问题是**,当我扫描我的条形码时,我可以直接在我的文本框中获取它。获得条形码后,我希望在messagebox或标签上看到产品(ProductName)的名称,而无需单击任何按钮或输入等

换句话说,我希望我的系统能像超市一样工作。。工作人员不需要点击显示器上的任何东西,只需扫描条形码并立即获得详细信息*


我认为它与一个事件有关,但是是哪一个呢?

您可能希望在扫描条形码时在文本框上触发TextChanged事件


根据条形码扫描仪的品牌和型号,通常会有一本说明书,其中有一页条形码用于表示终止符代码,如图所示

您需要做的是找到此页面,并对条形码扫描仪进行编程,使其在输入完条形码后自动制表符或CR。完成此操作后,您可以使用
TextChanged
事件检测终止符(制表符或CR)代码何时通过,然后您就可以处理它了


如果您选择TAB作为终止符,那么您可以简单地处理
离开
事件,因为它会自动从文本框中移出TAB,从而从文本框中离开焦点。

我的第一个猜测也是使用
文本框。TextChanged
-事件,但现在我想起来,阅读您的注释不起作用,这是有道理的。 从连接到的计算机的角度来看,大多数扫描仪“只是”像键盘一样工作(所以它们一个接一个地发送键…)。而且(正如所指出的)大多数条形码扫描仪都(或可以)配置为通过一些预配置的键来终止输入(在大多数情况下是Enter或Tab,但您应该能够通过查看手册或扫描时只查看输入的键来轻松找到)

因此,您应该做的是订阅(我想keydown也可以工作,但我认为扫描仪不太可能发送终止键然后按住它)


然后在该事件中检查终止密钥是否已发送,如果已发送,则检查文本框的文本内容并尝试从产品数据库中查找数据。

textbox.TextChanged
可能是您要查找的内容仅供参考,语言名称为“C#”,而不是“C Sharp”。此外,我还编辑了你的标题。请看“,”其中的共识是“不,他们不应该”。您如何阅读条形码?通过独立API或datawedge?我使用的是usb端条形码扫描仪,因此当我扫描条形码时,它会将其数字直接传输到我的(聚焦)文本框中。你观察字符,当你收到返回信息时,你就准备好了。我已经尝试过了,但它不起作用。当我扫描条形码时,只会将第一个数字写入textbox,而不会将剩余的数字写入textbox。我想原因是,因为我使用了textchanged事件,程序不会等待条形码上的数字。当它得到第一个数字时,它就作用于它。你必须使用计时器(请参阅)。条形码扫描器不会立即传输“整”号,而是逐个传输。例如,您扫描一个编号为1234的条形码,扫描仪将首先传输编号1,然后传输编号2,然后传输编号3,依此类推。所以你必须等待一点,直到整个数字被转移。你可以用定时器来实现。@ozisak,条形码是一个固定数字,对吗?只有当数字的长度实际上是整个条形码的长度时,你才能采取行动。是的,这是一种方法,但从OP的问题来看,与超市中的大规模扫描相比,离开文本框可能太耗时了。