日期:2014-05-17  浏览次数:21095 次

textbox 如何判断是手动输入还是扫描枪输入。。。
textbox 如何判断是手动输入还是扫描枪输入。。。

做了一个程序 需要刷卡的, 那个卡只可以用 扫描枪 读取卡号 的

但是 这个卡不需要密码,怎么去防止 收银员,去手动恶意输入 卡号盗取比人金额

我想 是否可以从输入的时间上判断??

怎么判断 textbox 不是人为通过键盘输入?

或者限制键盘输入 但是键盘输入限制了 扫描枪也打不进去了。。。。

===========================这样写不行啊 扫描枪也打不进去了
public void textbox_KeyPress(Object sender, ......)
{
  if(e.KeyChar < 48)
  {
  e.Handled=true;
  }
}
==========================这样写不行啊 扫描枪也打不进去了


各位高手指点下。

------解决方案--------------------
如果是键盘输入,

你可以通过textbox1_keydown进行处理

------解决方案--------------------
其实最简单的就是把文框设为只读。


为什么不采用这种方法呢?
------解决方案--------------------
是的,你现在不就是通过代码读数。

读完后赋值给文本框。

文本框设为只读本身就只是针对用户不可以输入。

代码操作赋值是可以的。


------解决方案--------------------
你把textbox设置为只读。用户就不可以手动输了,但是后台可以通过程序把读到的值赋值给文本框的。
------解决方案--------------------
扫描枪就是模拟键盘输入,

------解决方案--------------------
换成串口的扫描枪,
串口的枪需要写接口程序。

不同于键盘口的枪。

------解决方案--------------------
什么样扫描枪,它没有用于开发的lib么?
我现在用的是Honeywell得handheld产品,带windows mobile系统还能扫描,它提供了开发库。自动扫描模式实际就是填充扫描条码到有焦点的文本框中。默认的是扫描同时会发出虚拟键盘事件,比如条码是abc123,它就会发出a,b,c,1,2,3 六个key事件还会有固定的扫描key事件。你还可以设置他不发虚拟键盘事件,这样如果扫描的话就会有固定的key事件,你检测如果是这个固定的key事件你就认为它是扫描的。还有它带有开发库,设置扫描不是自动填充,这种你可以在程序中接受到扫描事件,你来控制扫描到的文本该填充到那,这样你将文本框disable掉就行,从扫描事件里填充文本框文本,就是textbox1.text = ....
------解决方案--------------------
判断输入的时间.

扫描枪几毫秒就能完成,手工一般情况是不可能那么快的
------解决方案--------------------
必须 用小键盘输入,小键盘上 可以切换回键盘输入.
------解决方案--------------------
之前用扫描程序都是直接赋值给文本框 的。。。。。。。。。。。。。。。。


LZ贴点你扫描枪怎么让文本框出现值的代码吧