WinForm中TextBox 中判断扫描枪输入与键盘输入

本文转载:http://www.cnblogs.com/Hdsome/archive/2011/10/28/2227712.html

提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入。如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码。这时候我们就要判断输入设备是手工还是扫描枪。

尝试的方法:

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

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

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

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

实验:

实验结果证明开始的推断。

解决方法:

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 ;
        }

至此, 问题解决,希望大家有更好的方法留言交流

本文在实际项目中使用;

DateTime dtStart = DateTime.Now;
            this.txtCustomerNo.TbKeyPress += (sender, e) =>
            {
                DateTime dtCurrent = DateTime.Now;
                Console.WriteLine("dtStart:" + dtStart.ToString());
                Console.WriteLine("dtCurrent:" + dtCurrent.ToString());
                TimeSpan ts = dtCurrent.Subtract(dtStart);
                if (ts.Milliseconds < 35)
                {
                    IsScanningGunAuto = true;
                    Console.WriteLine("扫描枪;ts:" + ts.Milliseconds.ToString() + " Text:" + this.txtCustomerNo.Text.Trim());
                }
                else
                {
                    IsScanningGunAuto = false;
                    Console.WriteLine("手动输入;ts:" + ts.Milliseconds.ToString() + " Text:" + this.txtCustomerNo.Text.Trim());
                }
                dtStart = dtCurrent;
                Console.WriteLine("----------------------------------------");
            };
            this.txtCustomerNo.TbKeyDown += (sender, e) =>
            {
                if (this.txtCustomerNo.TbFocused)
                {

                    if (e.KeyCode == Keys.Enter)
                    {
                        if (IsScanningGunAuto)
                            ScanningGunAuto();
                        //else
                        //btnSeach_Click(null, null);
                        //this.txtCustomerName.Focus();
                    }

                }

            };

  

WinForm中TextBox 中判断扫描枪输入与键盘输入

时间: 2024-11-02 23:39:48

WinForm中TextBox 中判断扫描枪输入与键盘输入的相关文章

【转】C#中判断扫描枪输入与键盘输入

提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我们就要判断输入设备是手工还是扫描枪.尝试的方法: 1.将TextBox属性设为ReadOnly=true.结果:无法输入. 2.在TextBox的KeyPress事件中设置属性e.handle=true.结果:扫描枪输入时也会触发KeyPress事件,因此也不能输入. 3.在TextBox的Valu

Android高仿微信表情输入与键盘输入(详细实现分析)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/52126391 出自[zejian的博客] ??表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决思路,再加上研究了好几个开源项目的代码,最后终于苦逼地整合出比较不错的实现效果(这里不仅给出了实现方案,还提供一个

Scanner 输入---从键盘输入两个数进行相加

1 import java.util.Scanner;//scanner 是包含在Java.util中的:使用的时候需要调用 2 3 /** 4 * 测试Scanner类的使用.如何接受键盘的输入 5 * @author ZBG34854 6 * 7 */ 8 public class TestScanner { 9 public static void test01(){ 10 Scanner s = new Scanner(System.in); 11 String str = s.next

js获得gridview中textbox中的值

var inputs= document.getElementById("<% =GridView1.ClientID >").getElementsByTagName("input"); for(int i=0;i < inputs.legth;i ++) { alert(inputs[i].value); }

抓取扫描枪扫描数据的案例

背景: 最近要做一个抓取扫描枪扫描条形码获取条形码数据的功能,以前没有玩过扫描枪,但是因为做过很多其他方面的外设获取数据的项目,所以原理也明白,都是相当于键盘输入,所以相当的是通过获取键盘输入的方案实现,因为这个功能点是用于整个pc上所有扫描枪程序的数据的抓取,就是其他程序用扫描枪,我做的这个程序也能抓取到数据,并对数据进行相应的处理,至于数据处理那是后面自己所做的业务需求的处理了,和抓取扫描枪扫描数据无关了,所以可以通过全局键盘钩子抓取键盘的输入去实现,这样能够去获取每个键盘输入的值,想法有了

获取键盘输入或者USB扫描枪数据

/// <summary> /// 获取键盘输入或者USB扫描枪数据 可以是没有焦点 应为使用的是全局钩子 /// USB扫描枪 是模拟键盘按下 /// 这里主要处理扫描枪的值,手动输入的值不太好处理 /// </summary> public class BardCodeHooK { public delegate void BardCodeDeletegate(BarCodes barCode); public event BardCodeDeletegate BarCodeE

飞凌嵌入式FET1052-C解决方案 扫描枪方案

扫描枪是继键盘和鼠标之后的第三代主要的电脑输入设备.直接从图片.照片.胶片到各类图纸图形以及文稿资料都可以用扫描枪输入到计算机中,进而实现对这些图像信息的处理.管理.使用.存储或输出. 随着条形码技术的发展,扫描枪目前以广泛的应用到电力行业.交通运输业.物流行业.邮电通讯业.鞋服行业.行政执法等行业. 扫描枪构成: 常见的扫描枪一般由光源.光学透镜.扫描模组.模拟数字转换电路加塑料外壳构成. 扫描枪原理: 扫描枪通过打出的光源来扫描条码,通过条码的黑白条空所反射的光的巨大差别来识别条码,当扫描一

Java键盘输入的几种方式,大爱Scanner

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.util.Scanner; 5 6 public class EnterTest { 7 8 public static void main(String[] args) { //主方法 9 CharTest(); //调用System.in方法 10 ReadTest()

C#中winform控制textbox输入只能为数字的方法

本文实例讲述了C#中winform控制textbox输入只能为数字的方法.分享给大家供大家参考.具体实现方法如下: 添加keyPress事件,控制键盘输入只能是自然数: 代码如下: /// <summary> /// 控制键盘输入只能是自然数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param>