在C#中限制对特定设备的输入

时间:2011-04-25 07:58:46

标签: c# winforms textbox

我有两个设备(KeyBoard和BarCodeScanner)和两个文本框(文本框1和文本框2)。

现在我想限制用户只能在文本框1中使用键盘,在文本框2中使用条形码扫描器。

这在C#中怎么可能?

3 个答案:

答案 0 :(得分:2)

你应该看一下:Read data from Bar Code Scanner in .net (C#) windows application!

因此,您的扫描仪可能会发送特殊字符以帮助您识别输入来自扫描仪,或者它可能为您提供了一个可用于检测此类事件的附加库。 让我们假设扫描仪与键盘的行为完全相同,没有任何特殊字符,以帮助您知道它来自扫描仪,并且没有任何来自您可以使用的制造商网站的额外库。 然后你可以使用的是:测量第二个文本框的KeyDown事件中的打字速度。

我怀疑扫描仪会立即输入代码,因此您可以测量出巨大的打字速度。

然后,如果打字速度大于阈值(例如人类世界速度记录大约每分钟1000个字符),则删除输入的文本。 这很hacky,但我没有更好的主意。

答案 1 :(得分:1)

这取决于我猜测扫描仪的连接方式。如果它只是在计算机和键盘之间连线,那你就不走运了,因为没有任何可靠的方式来区分键盘输入和扫描仪输入。

如果单独连接,必须有一些方法来获取扫描仪数据,可能是通过扫描仪软件提供的类,因此您必须使用那里提供的内容并将收到的内容放入TextBox2.Text 。至于禁用此框的键盘输入,您只需设置TextBox2.ReadOnly = true即可prevent any input

答案 2 :(得分:1)

我只使用条形码扫描仪一次。在我的scaner中,可以强制它在将输入传递给计算机之前生成特殊的控制序列。这种行为是通过扫描仪的本机软件掌握的。但由于我没有参与定制,我无法指定任何细节 - 我的同事在我之前定制了它 在我的情况下,扫描仪在扫描日期之前发送了Ctrl + J,我能够确定来自键盘或条形码扫描仪的源输入。