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 中判断扫描枪输入与键盘输入的更多相关文章
- 【转】C#中判断扫描枪输入与键盘输入
提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我 ...
- C# Winform中无焦点状态下获取键盘输入或者USB扫描枪数据
类文件: C#类文件 using System; using System.Collections.Generic; using System.Text; using System.Runtime.I ...
- 获取键盘输入或者USB扫描枪数据
/// <summary> /// 获取键盘输入或者USB扫描枪数据 可以是没有焦点 应为使用的是全局钩子 /// USB扫描枪 是模拟键盘按下 /// 这里主要处理扫描枪的值,手动输入的 ...
- WinForm 无焦点获取键盘输入
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 使用BIOS进行键盘输入和磁盘读写
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- C# 计算器 如果设置键盘输入的监听事件
这个事情困扰了我好久,之前java写的计算器程序可以正常运行了,但是因为打包问题(尝试过多次,感觉好麻烦,个人比较崇尚“点子”,注重创新,思来想去之后,决定试试C#模仿java再写一遍),想要用C#模 ...
- 请问在C#的Winform下如何用正则表达式限制用户只能在textBox中输入18位的身份证号码。
请问在C#的Winform下如何用正则表达式限制用户只能在textBox中输入18位的身份证号码. 2013-06-18 11:07会飞的鱼儿18 | 分类:C#/.NET | 浏览101次 不能有空 ...
- C# textbox中输入时加限制条件 // C#Winform下限制TextBox只能输入数字 // 才疏学浅(TextBox 小数点不能在首位+只能输入数字)
textbox中输入时加限制条件 分类: C# winform2008-08-26 08:30 306人阅读 评论(0) 收藏 举报 textbox正则表达式object 1.用正则表达式! 2.使用 ...
- C#的winform中控制TextBox中只能输入数字
C#的winform中控制TextBox中只能输入数字 private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPr ...
随机推荐
- centos 7.0防火墙导致vagrant端口映射失败
在vagrant上部署了centos7.0后,Vagrantfile端口转发设置后,宿主机访问客户机站点还是无法访问,问题出在:centos7.0以上版本默认会安装firewalld防火墙, fire ...
- 转:Ext GridPanel根据条件显示复选框
Ext GridPanel实现复选框选择框: var selectModel = new Ext.grid.CheckboxSelectionModel({ singleSelect : false ...
- hierarchyviewer偶然不能使用的解决方法
在DDMS的device中可以看到设备,并显示可以debug的状态,可以看到不显示进程的信息,但是hierarchyviewer也却不显示各个Window. 在控制台的打印信息如下: - hierar ...
- awk 多分隔符
#!/bin/bash log_path="./log/" dates=`date -d '-1 days' +'%Y%m%d'` cd $log_path; for i in ` ...
- Android 开发遇到的问题及解决办法
Failed to resolve: com.android.support:appcompat-v7:23.4.0 问题解决办法: 1.在Android SDK Manager中找到对应的SDK版本 ...
- Windows Azure 配置SSTP
方法參考下面文章的步驟. 这个成功.http://freevpnba.com/windows-azure-sstp-vpn/ 这个没成功,不知道为什么.http://diaosbook.com/pos ...
- 最牛「CSRF防护」,带你进入大虾们的圈子!
简单理解 CSRF 什么是 CSRF? CSRF,通常称为跨站请求伪造,英文名 Cross-site request forgery 缩写 CSRF,是一种对网站的恶意攻击.一个跨站请求伪造攻击迫使登 ...
- 【UVA11324】The Largest Clique (SCC)
题意: 给一张有向图G,求一个结点数最大的结点集,使得该结点中任意两个结点 u 和 v满足:要么 u 可以到达 v, 要么 v 可以到达 u(u 和 v 相互可达也可以). 分析: Tarjan求SC ...
- WordPress Xhanch - My Twitter插件跨站请求伪造漏洞(CVE-2013-3253)
漏洞版本: WordPress Xhanch - My Twitter Plugin 2.7.5 漏洞描述: Bugtraq ID:61629 CVE ID:CVE-2013-3253 WordPre ...
- -_-#【响应式】matchMedia
谈谈响应式Javascript <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...