点击RFID卡时清除文本框?

时间:2016-09-23 02:06:52

标签: c# winforms rfid

我有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()方法。只循环一次。

1 个答案:

答案 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 = "";
}