日期:2014-05-19  浏览次数:20821 次

谁用过扫条形码的那个机器,问个接受的问题
现在是这么回事。我用一个textbox接受我每次扫到的值,在textBox1_TextChanged   里处理接受到的值,可是现在我发现一个问题,如果条形码是6   921317   905370     ,观察几次发现,扫条形码的机器是一位一位的扫,可textBox1_TextChanged   事件在扫进来一位马上就触发。例如是这样的


private   void   textBox1_TextChanged(object   sender,   System.EventArgs   e)
{
MessageBox.Show(this.textBox1.Text);
}

我要想扫6   921317   905370

出现的结果是只显示个6

我也想过通过记他的位数,然后垒加   ,可是现在项目的条形码位数不确定!!

我想是不能找个其他控件一次性全部接受到。不知道那位做过,并且有好的经验,请说下。谢谢

------解决方案--------------------
不必TextChanged , 扫条形码的机器最后会有一个回车的, 你识别它的回车就可以了,

这样一来, 所有的数据都能查出来,
------解决方案--------------------
每一次事件进来,都去改写Textbox,把值改为“旧值+新值”并且纪录下最后一次修改的时间,如果两次纪录时间大于0.1秒,就刷新Textbox重头开始记录。

这样看看行不行
------解决方案--------------------
主要思想:扫描器会模拟键盘将条码输入,每得到一个字符都将触发一次字符改变。在扫描结束,将产生一个回车符。当收到这个字符时,才应该去处理。具体代码如下:
事件定义:
this.txtItemCode.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtBarCode_KeyPress);

private void txtBarCode_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == '\r ')
{
// 你的处理,你的条码在文本框中txtBarCode.Text
}

}
------解决方案--------------------
用Keypress事件处理就好了,回车的判断为 e.Keychar = '13 ' ...就好了