2013-03-01 13 views
5

Kullanıcının bir okuyucuda bir RFID kartına dokunduğu ve programın bu verileri gireceği bir programım var. Bu programda, Tamam'a tıklamanız gereken bir komut var. RFID kartına dokunulduğunda OK düğmesini nasıl kaldırırım ve otomatik tamamlama programı yaparım?) (C# RFID taramasından nasıl otomatik olarak tamamlanır?

temsilci boşluk Fonksiyonu;: Burada

programın parçalarıdır

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

Çağrı btnOK_Click mantığını ayırmak? Ne denedin? – Floris

cevap

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

Bu soruyu bunu ilk etapta nasıl oluştuğunu göstermedi çünkü "nasıl Tamam düğmesine kaldırırım" cevap vermez - Ben form tanımını düzenlemek gerekir şüpheli bunun için. Bu durumda, btnOK_click kodunun bir olay işleyicisinden bir "normal" işleve (bu da iyi bir fikir olur) değiştirilmesini sağlayın.

+0

Amacım gerçekten Tamam düğmesini kaldırmak değil. Belki onu saklamak için? Ancak amaç, istemin göründüğü zaman, sadece RFID kartına dokunduğumda ve komut istemi otomatik olarak kapanacaktır. Tamam'ı tıklamana gerek yok. Önerinizi denedim ama btnOK_click'in mevcut bağlamda mevcut olmadığını söyledi. – Kael

+0

Bekleyin, aslında işe yaradı. Bunu daha önce denedim. Ama bunun yerine, "btnOK_click" programını SetRFIDText (Hexed) 'ın altına kopyaladım. Ama program This.Close() ile çakışıyor gibi görünüyor; ve arka planda Geçersiz RFID mesaj kutusu belirir. Neden? – Kael

+0

İşlev çağrınızın bağlamında “Bu” ne ifade ediyor? Bunun yerine formun kendisine (isme göre) başvurabilir misiniz? Herhangi bir karışıklıktan kaçınacak ve çalışmalı (inanıyorum ki ...) – Floris

1

Basitçe Tamam düğmesini DataReceived yapmalı mıyız içinden

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(); 

} 
İlgili konular