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

时间:2011-07-18 15:00:34

标签: c# barcode

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

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.

所以我想在form_KeyDown()事件或其他一个事件中从firs char(W,U,M)向真正的文本框写入数据。

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

) 我想让代码选择自己的文本框。是什么方式?

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

2 个答案:

答案 0 :(得分:1)

你不能只阅读文字并有类似的内容:

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

答案 1 :(得分:0)

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

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