关于textbox 的触发事件textBox2_TextChanged
关于textbox 的触发事件textBox2_TextChanged
我现在textbox从扫描枪获得一串数据(例如:123456),
可是textBox2_TextChanged 把这次串数据(例如:123456),看作是从键盘输入了6个字符(分6次来处理,即textBox2_TextChanged会响应6次)
如何让textBox2_TextChanged 获得数据后,只响应一次
或者有没有其他方法: 使得textbox获得扫描枪数据后,立即触发一个事件
[解决办法]
我印象里扫描枪最后会送出一个回车的,你可以试着在KeyPress事件里捕捉回车,而不是在TextChanged里处理。
如果没有回车,但又能够确定编码的长度,可以根据文本框内容的长度来确定是否完整。
如果连长度都没有办法确定,那就只能靠计时器了。
[解决办法]
e.keychar==13
[解决办法]
e.KEYS==KEYS.Enter
[解决办法]
不一定是Enter。不同的条码扫描设备的出厂设置不同,但是都可以通过用它扫描厂家给你的设置手册来设置后缀。例如你可以设置后缀为"x",或者甚至是两个不可见的ascii码。然后在你的textBox2_TextChanged事件中做判断。例如你可以首先设计一个事件例如
public event EventHandler ScannerTextChanged;private void textBox2_TextChanged(object sender, EventArgs e){ if(textBox2.EndWith("x") { textBox2.Text= textBox2.Text.Substring(0, textBox2.Text.Length-1); if(ScannerTextChanged!=null) ScannerTextChanged(this,null); }}