这是我第一次使用这款条形码阅读器硬件。我在条形码输入后自动清除文本框时遇到问题。它会在将值传递给相应的字符串之前清除文本框。
private void txtStudentID_TextChanged(object sender, EventArgs e)
{
string a = txtStudentID.Text;
sqlDisplayInfo = a;
txtStudentID.Text.Clear()
}
我也尝试使用线程,但它失败了
private void txtStudentID_TextChanged(object sender, EventArgs e)
{
string a = txtStudentID.Text;
sqlDisplayInfo = a;
Thread.Sleep(1000);
txtStudentID.Text.Clear()
}
为我的新代码编辑:
我这里有问题+ =。例如,我扫描条形码,然后它结合了先前的扫描和下一次扫描
我使用计时器刻度,但它并不完美,因为它有时会导致检索数据库中的数据延迟,因此它不会与时间间隔协作
private void txtStudentID_TextChanged(object sender, EventArgs e)
{
timer1.Interval = (700);
timer1.Enabled = true;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
a = txtStudentID.Text;
displayData(a);//passing string a to method data retrieve
timer2.Interval = (700);
timer1.Enabled = true;
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
if (!string.IsNullOrWhiteSpace(this.txtStudentID.Text))
{
timer2.Stop();
txtStudentID.Clear();
}
}
答案 0 :(得分:1)
我想这个问题不是条形码阅读器,而是你正在使用文本更改事件的事实。当阅读器向文本框提供值时触发它(我假设文本框是如何填充的)。但是当你清除文本框时它也会触发。
所以会发生什么:
sqlDisplayInfo
填充了" 123"。textChanged
事件已触发。sqlDisplayInfo
。因此,您看不到sqlDisplayInfo
价值的任何变化。尝试调试代码,然后您可以看到事件被触发两次。
修改强>
从您的评论看起来,条形码阅读器会逐字逐句地读取。理想情况下,有一个信号表明读数已经完成。你读取字符串,在temp变量中构造它,当收到信号时,你将temp varialble的值赋给sqlDisplayInfo
,清除变量和文本框。
另一种选择可能只是阅读文本框并将其附加(不分配)到sqlDisplayInfo
变量。
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(this.textBox1.Text))
{
sqlDisplayInfo += this.textBox1.Text;
}
this.textBox1.Clear();
}
您仍会根据需要触发两倍的文本更改事件,但只有在您读取值后文本框发生更改时才会响应。
答案 1 :(得分:0)
感谢所有人给予的想法。 现在我明白了..
private void txtStudentID_TextChanged(object sender, EventArgs e)
{
timer1.Interval = (700);
timer1.Enabled = true;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
a = txtStudentID.Text;
displayData(a);// i put the txtStudentID.Clear() at the end of the method. I think i need some rest. :)
}
答案 2 :(得分:0)
这可能对您有帮助!
var id = record.submitFields({
type: recordType,
id: id,
values: {
fieldId: value
},
options: {
enableSourcing: false,
ignoreMandatoryFields : true
}
});