c# winform 中怎样让一个文本框可以用扫描q输入,而不能用键盘输入

c# winform 中怎样让一个文本框可以用扫描q输入,而不能用键盘输入,第1张

尝试的方法:

1.将TextBox属性设为ReadOnly=true。结果:无法输入。

2.在TextBox的KeyPress事件中设置属性e.handle=true。结果:扫描q输入时也会触发KeyPress事件,因此也不能输入。

3.在TextBox的ValueChanged事件中判断结果。结果:扫描q也是一个一个字符输入,不是一次性将整个条码输入。

思考:扫描q其实在输入上与键盘完全相似。但是人工输入和扫描设备输入的区别在于,扫描设备输入速度比较快而且时间间隔比较平均。

实验:

解决方法:

   Private DateTime _dt = DateTime.Now  //定义一个成员函数用于保存每次的时间点

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

        {

            DateTime tempDt = DateTime.Now          //保存按键按下时刻的时间点

            TimeSpan ts = tempDt .Subtract(_dt)     //获取时间间隔

            if (ts.Milliseconds >50)                           //判断时间间隔,如果时间间隔大于50毫秒,则将TextBox清空

                textBox1.Text = ""

            dt = tempDt 

        }

至此, 问题解决。

有两种模型

第一种模型不需要任何的编程,类似于辅助你的键盘录入,当你的焦点位于文本框时,能实现输入条码上的值+回车

第二种模型就需要进行代码 *** 作了,比如说扫描的时候不需要有前台,是一个纯后台记录的动作,那就有可能需要进行监控 *** 作了,具体需要根据你的扫描q来决定,可以参考一下这个网址:

http://www.codeproject.com/Tips/141934/Barcode-scanning

条码扫描q的原理跟键盘是一样的。

1.当你用扫描q扫描一个条码后,跟你用键盘手工输入这个条码的效果是一样,因此只要在你的程序中放入一个文本框控件。

2.运行时先保证让文本框获得输入焦点,然后用扫描q对准条码嘀一下,条码就会出现在文本框中了,所以一般情况下用不着专门针对扫描q来进行编程。

3.当然后续对条码数据进行处理,比如存入数据库的代码也是不用做任何修改的,一般就是扫描一个指定的特殊条码。

4.如果你想实现一些特殊的效果,比如当扫描q发来数据时让指定的文本框自动获得焦点、条码数据传送完毕后自动存入数据库等,这些可以通过对扫描q进行设置结合简单的编程来实现。

5.大部分扫描q都可以通过设置来给条码添加前缀和后缀,然后你的程序可以通过键盘事件来检测前缀和后缀再进行相应的 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7465224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存