我有2张RFID卡,价值不同,例如123和456。
当我点击textbox1
,然后点击第一张卡进入计算机时,textbox1.text
会给我一个123的文本。
问题是当我将第二张卡敲击机器时,如何清除第一张卡片值。我应该使用textbox1
上的哪个活动,所以当我点击第二张卡时它只给我456。
设备发送的代码具有特定长度,例如10个字符。
目前使用我尝试过的代码,点击第一张卡后再点击第二张卡片,textbox1.text
变为123456,而我预计第一张卡片显示123,第二张卡片显示456卡。
private void textEdit1_EditValueChanged(object sender, EventArgs e)
{
string text1;
text1 = textEdit1.Text;
if (string.IsNullOrEmpty(text1)) return;
if (text1.Length == 10)
{
getcodestudent(text1);
textEdit1.Text = string.Empty;
textEdit2.Focus();
textEdit1.Focus();
cektap();
if (tap == 0 && tap2 == 0)
{
MessageBox.Show("member not registered on this class");
}
}
}
当我调试它时。该事件运行了两次,因为我将textedit.Text
设置为空,它已经过了1次(循环)。结论:
当我调试程序时,在它到达代码messagebox.show
结束后,它循环回textEdit1.Text = string.Empty;
并再次运行cektap()方法。只循环一次。
答案 0 :(得分:3)
条形码扫描仪或此类设备通常会发送击键。因此,您可以处理KeyPress
的{{1}}事件,并检查TextBox
的长度是否是您期望的具体长度,然后清除Text
:
Text
此外,某些设备会在序列末尾发送一个额外的 Enter 键,该键可以处理并用于运行Form的默认操作或更改焦点或其他内容。例如:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (this.textBox1.TextLength == 10)
this.textBox1.Text = "";
}