关于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事件中做判断。例如你可以首先设计一个事件例如
C# code
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);
}
}