2013-03-01 2 views
5

私は、ユーザがRFIDカードをリーダーにタップし、プログラムがこのデータを入力するプログラムを持っています。このプログラムでは、[OK]をクリックする必要があるプロンプトが表示されます。 RFIDカードがタップされたら、[OK]ボタンを削除して自動OKプログラムにするにはどうすればよいですか?ここでC#RFIDスキャニングから自動大丈夫になる方法は?

は、プログラムの一部である:

デリゲートvoid関数();

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

コールbtnOK_Clickの論理がそれを行うべき分離しますか?何を試しましたか? – Floris

答えて

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

これは質問あなたはそれが最初の場所で作成された方法を示していなかったので、「どのように私はOKボタンを削除するには」を答えていない - 私はあなたがフォーム定義を編集する必要が疑われますそれのために。その場合、btnOK_clickのコードをイベントハンドラから「通常の」関数に変更します(とにかく良い考えです)。

+0

私の目的は、本当にOKボタンを削除することではありません。多分それを隠すだろうか?しかし、目標は、プロンプトが表示されたら、私はRFIDカードをタップするとプロンプトが自動的に閉じます。 OKをクリックする必要はありません。私はあなたの提案を試みましたが、btnOK_clickは現在のコンテキストに存在しないと言いました。 – Kael

+0

待って、それは実際に働いた。私はこれを前に試しました。代わりに、 "btnOK_click"プログラムをSetRFIDText(Hexed);の下にコピーしました。しかし、プログラムがThis.Close()と競合しているようです。無効なRFIDメッセージボックスがバックグラウンドで表示されます。何故ですか? – Kael

+0

'これはあなたの関数呼び出しのコンテキストを参照していますか?代わりにフォーム自体を(名前で)参照できますか?それは混乱を避け、仕事をすべきです(私は信じています...) – Floris

1

は単にdataReceived内側からOKボタン

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

} 
関連する問題