当程序没有焦点时读取条形码

本文关键字:读取 条形码 焦点 程序 | 更新日期: 2023-09-27 18:02:20

我有一个从条形码阅读器读取数据到文本框的表单。有一些编码条形码像这样

W12346S1 is first step of a work
W12346S2 is second step of a work
W12346S3 is third step of a work
...
U123 is a user he read his code to make process
M456 is a machine user do the work on this machine.

所以我想写数据到真正的文本框从第一个字符(W, U, M)在form_KeyDown()事件或一个不同的。

(true文本框意味着如果用户读取以W键开头的条形码,让程序将条形码数据写入"work tekxtbox",或者如果他读取以U键开头的条形码,程序将将条形码数据写入用户文本框等…

)我想让代码选择自己的文本框。怎么走?

注意:如果我使用textbox1。Text += e.KeyData.ToString();
输出为:ShiftKey, ShiftW, ShiftD1D2D3D4D6ShiftKey, ShiftS, ShiftD2 W12346S2

当程序没有焦点时读取条形码

你就不能这样读吗?

string FirstChar = BarcodeString.Substring(0,1);
if (FirstChar.Equals("W"))
    WorkTextBox.Text = BarcodeString;
if (FirstChar.Equals("U"))
    UserTextBox.Text = BarcodeString;

可以将条形码阅读器的输入与键入的按键区分开来吗?如果是这样,我建议传入的条形码不由击键处理程序处理,而是使用它们自己的特殊处理程序,它将等待,直到它扫描了整个条形码,然后将其粘贴到适当的框中。

如果阅读器的输入看起来像按键,事情可能会更棘手一些。您可能希望拦截进入表单的所有击键,查看每个击键,确定它看起来是否可能是条形码的一部分,如果是,则对其进行缓冲。每当您确定缓冲的数据不是条形码的一部分时,无论是由于后面的字符还是由于计时器过期,都可以触发您自己的击键事件来重新发出击键。确保按顺序处理所有击键可能有点棘手,但希望不会太糟糕。防止条形码阅读器的击键进入不合适的字段可能比在击键进入不合适的字段后提供良好的用户体验更容易。