Winforms禁用文本框键盘输入但保持文本框启用

3
场景是这样的;我需要禁用文本框以防止用户使用键盘输入。但是,文本框应该能够通过类似于条形码阅读器的设备来接收输入。我考虑设置一个计时器并记录两次按键之间的时间间隔(还不确定)。但也许有一种属性或更智能的算法可以实现这个功能?附:这是一个Windows窗体应用程序。

1
WinForms还是WebForms还是其他什么?您的问题只标记了C#,并且您正在谈论某个文本框,但到处都有文本框。 - Darin Dimitrov
是否有针对条形码阅读器的API,还是它只是将输入发送到键盘缓冲区? - Mike Zboray
我不想考虑是否有API。条码阅读器可以是任何一种条码阅读器。因此,我需要找到一个通用的解决方案,适用于所有类型的阅读器。 - Mtok
很可能你的条形码阅读器就像一个键盘一样工作。因此,Winforms无法区分你的条形码阅读器或任何其他键盘的文本输入。为此,您需要低级别(低于C#)来检测文本输入的来源。也许你会记录文本输入的开始和结束时间?但我猜代码会有些笨拙。 - Mike de Klerk
我不知道什么是条形码阅读器。谢谢。 - Mahdi Tahsildari
显示剩余2条评论
2个回答

4
您说需要支持任何模拟键盘的条码阅读器,因此很难通过编程区分键盘输入和条码阅读器输入。您提出的使用时间控制的想法是好的,不过我会稍微改进一下。我会在Form中添加一个Timer,并在第一个字符输入到TextBox中时启动它。计时器应设置为非常短的时间间隔,并禁用自动重新启动。当计时器触发时,检查TextBox是否有有效的条形码,如果有,则处理它。无论如何,在处理完后清除文本框。这样,试图使用键盘的人将看到他们输入的文本简单地消失了,而条形码扫描器(“打字”非常快)仍然可以工作。

0
也许你需要追踪“键盘按下”事件? 我不认为自动粘贴东西会触发“键盘按下”事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接