C# Winforms禁用textbox上的键盘输入,但保持启用textbox

C# Winforms禁用textbox上的键盘输入,但保持启用textbox,c#,.net,winforms,C#,.net,Winforms,情况是这样的, 我需要禁用文本框以通过键盘从用户获取输入。但是textbox应该使用类似于条形码阅读器的设备来获取输入。我想拿一个计时器,在两次按键之间获取时间跨度(还不清楚)。但也许有一个属性或更智能的算法可以实现这一点 p、 这是一个windows窗体应用程序。也许您需要跟踪“键盘按下”事件? 我不认为自动粘贴东西会触发“键盘按下”事件。您说过您需要支持任何条形码读取器,它通常模拟键盘,因此可能没有一种简单的方法通过编程区分键盘输入和条形码读取器输入 你关于使用计时的想法很好,尽管我会做一些

情况是这样的,

我需要禁用文本框以通过键盘从用户获取输入。但是textbox应该使用类似于条形码阅读器的设备来获取输入。我想拿一个计时器,在两次按键之间获取时间跨度(还不清楚)。但也许有一个属性或更智能的算法可以实现这一点


p、 这是一个windows窗体应用程序。

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

您说过您需要支持任何条形码读取器,它通常模拟键盘,因此可能没有一种简单的方法通过编程区分键盘输入和条形码读取器输入

你关于使用计时的想法很好,尽管我会做一些稍微不同的事情。我会在
表单中添加一个
计时器
,并在
文本框中输入第一个字符时启动它。计时器应设置为非常短的时间跨度,并应禁用自动重启。当计时器熄灭时,检查
文本框
是否有有效的条形码,如果有,则进行处理。无论哪种方式,请在之后清除文本框


然后,任何试图使用键盘的人都会觉得他们键入的文本消失了,而条形码扫描仪(其“键入”速度非常快)仍然可以工作。

WinForms或WebForms或其他什么?你的问题只是用C语言来标记的,你在谈论一些文本框,但是到处都有文本框。有没有某种条形码阅读器的API,或者它只是把输入发送到键盘缓冲区?我不想考虑有一个API。条形码阅读器可以是任何条形码阅读器。因此,我需要找到一个通用的解决方案,它将适用于所有的条形码阅读器。很可能你的条形码阅读器的功能就像一个键盘。因此Winforms将无法区分条形码阅读器或任何其他键盘的文本输入。为此,您可以使用低级别(低于C#)来检测文本输入的来源。也许你正在记录文本输入的开始和结束?但我想这样的代码会有点笨拙。@mahditahsildari“条形码阅读器”可能和任何键盘输入一样。它不是具有“ScannedText”属性或任何类型的对象。它只是一个文本输入设备。