2013-03-01 1 views
5

Ich habe ein Programm, bei dem der Benutzer eine RFID-Karte auf ein Lesegerät tippt und das Programm diese Daten eingibt. In diesem Programm gibt es eine Eingabeaufforderung, in der ich auf OK klicken muss. Wie entferne ich die OK-Taste und mache ein Auto-OK-Programm, nachdem die RFID-Karte angetippt wurde?C# Wie kann man beim RFID-Scannen automatisch eingreifen?

Hier sind die Teile des Programms:

delegate void Function();

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     string sdsd = serialPort1.ReadLine(); 
     string Hexed = new LasalleRFIDComputerRentals.BLL.DAL.Utils().HexIt(sdsd); 

     SetRFIDText(Hexed); 
    } 


    protected void SetRFIDText(string input) 
    { 
     this.Invoke(new Function(delegate() 
     { 
      txtRFID.Text = input; 
     })); 

     CustomerInfo customer = new Customer().GetCustomerByRFID(txtRFID.Text); 


    } 

    private void btnOk_Click(object sender, EventArgs e) 
    { 
     if (txtRFID.Text.Trim() == "") 
     { 
      MessageBox.Show(this, "Please supply the RFID.", "RFID Reader", MessageBoxButtons.OK); 

      txtRFID.Focus(); 
      return; 
     } 

     CustomerInfo customer = new Customer().GetCustomerByRFID(txtRFID.Text); 

     if (customer.CustomerID <= 0) 
     { 
      MessageBox.Show("Invalid RFID", "Validation"); 

      this.Close(); 
      return; 
     } 


     if (_parentForm == "StandBy") 
     { 
      Utils.CurrentCustomer.CustomerInfo = customer; 

      frmStandBy form = (frmStandBy)this.Owner; 

      form.xResult = "OK"; 
     } 

     this.Close(); 
    } 
+0

Anruf btnOK_Click von innen DataReceived sollte es tun? Was hast du versucht? – Floris

Antwort

0
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    string sdsd = serialPort1.ReadLine(); 
    string Hexed = new LasalleRFIDComputerRentals.BLL.DAL.Utils().HexIt(sdsd); 

    SetRFIDText(Hexed); 
    btnOK_click(sender, e); 
} 

Das beantwortet nicht die Frage „Wie entferne ich die OK-Taste“, da Sie nicht zeigen, wie es in erster Linie erstellt wurde - ich vermute, Sie müssen die Formulardefinition bearbeiten dafür. In diesem Fall ändern Sie den Code für btnOK_click von einem Event-Handler in eine "normale" Funktion (was ohnehin eine gute Idee wäre).

+0

Mein Ziel ist nicht wirklich die OK-Taste zu entfernen. Vielleicht um es zu verstecken? Aber das Ziel ist, wenn die Aufforderung erscheint, tippe ich einfach auf die RFID-Karte und die Eingabeaufforderung wird automatisch geschlossen. Ich muss nicht auf OK klicken. Ich habe Ihren Vorschlag ausprobiert, aber es heißt, dass btnOK_click im aktuellen Kontext nicht existiert. – Kael

+0

Warte, es hat irgendwie funktioniert. Ich habe das schon mal probiert. Stattdessen habe ich das Programm "btnOK_click" unterhalb von SetRFIDText (Hexed); kopiert. Aber es scheint, als ob das Programm einen Konflikt mit This.Close(); und das Ungültige RFID-Meldungsfeld wird im Hintergrund angezeigt. Warum das? – Kael

+0

Worauf bezieht sich 'This' im Zusammenhang mit Ihrem Funktionsaufruf? Können Sie stattdessen auf das Formular selbst (namentlich) verweisen? Es würde jede Verwirrung vermeiden und sollte funktionieren (ich glaube ...) – Floris

1

einfach trennen die Logik der OK-Taste

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    string sdsd = serialPort1.ReadLine(); 
    string Hexed = new LasalleRFIDComputerRentals.BLL.DAL.Utils().HexIt(sdsd); 

    SetRFIDText(Hexed); 
} 


protected void SetRFIDText(string input) 
{ 
    this.Invoke(new Function(delegate() 
    { 
     txtRFID.Text = input; 
    })); 

    // what is it for? 
    //CustomerInfo customer = new Customer().GetCustomerByRFID(txtRFID.Text); 

    SearchCustomer(); 

} 

private void btnOk_Click(object sender, EventArgs e) 
{ 
    SearchCustomer(); 
} 

private void SearchCustomer() 
{ 

    if (txtRFID.Text.Trim() == "") 
    { 
     MessageBox.Show(this, "Please supply the RFID.", "RFID Reader", MessageBoxButtons.OK); 

     txtRFID.Focus(); 
     return; 
    } 

    CustomerInfo customer = new Customer().GetCustomerByRFID(txtRFID.Text); 

    if (customer.CustomerID <= 0) 
    { 
     MessageBox.Show("Invalid RFID", "Validation"); 

     this.Close(); 
     return; 
    } 


    if (_parentForm == "StandBy") 
    { 
     Utils.CurrentCustomer.CustomerInfo = customer; 

     frmStandBy form = (frmStandBy)this.Owner; 

     form.xResult = "OK"; 
    } 

    // what is it for? 
    //this.Close(); 

} 
Verwandte Themen