繁体   English   中英

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

[英]Restrict input to a specific device in C#

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

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

这怎么可能在C#中?

你应该看看这个: 从.net(C#)windows应用程序中的条形码扫描器读取数据!

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM