2016-09-23 2 views
0

Ich habe 2 RFID-Karten mit unterschiedlichen Werten, zB 123 und 456. Wenn ich auf textbox1 klicken und dann die erste Karte in eine Maschine tippen, wird die textbox1.text mir einen Text von 123Klartextbox, wenn RFID-Karte antippen?

Die Frage ist, Wie kann ich den ersten Kartenwert löschen, wenn ich auf die zweite Karte tippe, um zu machonen. welches Ereignis auf der textbox1 sollte ich verwenden, wenn ich also die zweite Karte tippe, gebe ich nur 456.

Der Code, den das Gerät sendet, hat eine bestimmte Länge, zum Beispiel 10 Zeichen.

Derzeit verwende ich den Code, den ich ausprobiert habe, nachdem ich die erste Karte angetippt habe und dann die zweite Karte tippe, die textbox1.text werde 123456, während ich 123 für die erste Karte und 456 für die zweite Karte erwarte.

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"); 
     } 
    }    
} 

Wenn ich es debuggen. Das Ereignis wird zweimal ausgeführt, weil ich die textedit.Text auf leer gesetzt habe, lief es 1 Mal über (Schleife). Schlussfolgerung: Wenn ich das Programm debuggen, nachdem es das Ende des Codes erreichen messagebox.show es Schleife zurück zu textEdit1.Text = string.Empty; und erneut die cektap() -Methode ausführen. Schleife nur einmal.

+0

wilde Vermutung, aber für den Fall, tust du so etwas wie: 'TextBox1.Text + = TextBox2.Text;' ersetzen, die durch 'TextBox1.Text = textbox2.text' –

+0

iam noch nicht mit noch kein Code. – chopperfield

+0

Dann könnten Sie Ihr Setup ein wenig mehr beschreiben? Zum Beispiel, wessen Code benutzt du, oder welche Bibliotheken, oder irgendetwas anderes, damit ich dir helfen kann, irgendwo Code zu modifizieren. –

Antwort

2

Barcodescanner oder solche Geräte senden normalerweise Tastenanschläge. So können Sie KeyPress Fall TextBox behandeln und prüfen, ob die Länge der Text ist die spezifische Länge, die Sie erwarten, dann deaktivieren Sie die Text:

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

Auch einige Geräte senden eine zusätzliche Geben Sie Taste am Ende der Sequenz Dies kann gehandhabt und verwendet werden, um die Standardaktion von Form auszuführen oder den Fokus oder etwas anderes zu ändern. Zum Beispiel:

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(); 
    } 
} 
+0

mmh, danke für Ihre Informationen. total neu in rfid. Ich werde etwas Code in den Keypress setzen und dann den Wert editieren. – chopperfield

+0

Auch einige Geräte senden am Ende der Sequenz einen zusätzlichen 'Enter'-Schlüssel, der gehandhabt werden kann und verwendet werden kann, um die Standardaktion' Form 'auszuführen oder den Fokus oder etwas anderes zu ändern. –

+0

Ich möchte noch eine Frage stellen .. Wenn ich auf die Karte tippe, wird der Tastenanschlag nacheinander gedrückt? z. B. 1 dann 12 dann 123 dann 1234 dann 12345 und so weiter. – chopperfield

Verwandte Themen