现在是这么回事。我用一个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我也想过通过记他的位数,然后垒加 ,可是现在项目的条形码位数不确定!!我想是不能找个其他控件一次性全部接受到。不知道那位做过,并且有好的经验,请说下。谢谢

解决方案 »

  1.   

    不必TextChanged  ,  扫条形码的机器最后会有一个回车的,  你识别它的回车就可以了, 这样一来,  所有的数据都能查出来,
      

  2.   

    忘说了一句,我的是winfrom,不是webfrom。
      

  3.   

    每一次事件进来,都去改写Textbox,把值改为“旧值+新值”并且纪录下最后一次修改的时间,如果两次纪录时间大于0.1秒,就刷新Textbox重头开始记录。这样看看行不行
      

  4.   

    主要思想:扫描器会模拟键盘将条码输入,每得到一个字符都将触发一次字符改变。在扫描结束,将产生一个回车符。当收到这个字符时,才应该去处理。具体代码如下:
    事件定义:
    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
                 }
                
    }
      

  5.   

    你的方法之所以不行,是因为在第一个字符时,触发MessageBox,扫描后的字符,都送到了消息框中,而不是你的文本框。
    如果你需要跟踪扫描到的信息,应该等扫描结束(收到回车符)/或使用Debug.WriteLine(TextBox1.Text);不要影响到条码后续的输入才可以。
      

  6.   

    用Keypress事件处理就好了,回车的判断为 e.Keychar = '13' ...就好了
      

  7.   

    对阿,用 KeyPress 是OK的