点击RFID卡时清除文本框?

Clear textbox when tap RFID card?

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

条形码扫描仪或此类设备通常会发送击键。所以你可以处理 TextBoxKeyPress 事件并检查 Text 的长度是否是你期望的特定长度,然后清除 Text:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (this.textBox1.TextLength == 10)
        this.textBox1.Text = "";
}

还有一些设备在序列末尾发送一个额外的 Enter 键,可以处理并用于 运行 表单的默认操作或更改焦点等别的。例如:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        //Do Something and the select all texts to prepare text box for next card
        this.textBox1.SelectAll();
    }
}