2013-09-26 15 views
0

我有一個條形碼掃描應用程序,它在文本框的文本更改事件上運行。它會驗證條碼是否先前被掃描到訪問數據庫中,並對用戶進行風格驗證。無法在文本框中正確掃描條碼c#

我有一個問題,在文本框中看到的數字只是讀取條形碼的單個數字(第一位數字)。

這個問題,因爲文本更改屬性立即驗證?

代碼如下

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     textBox1.SelectAll(); 
     OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\dell\Documents\Database5.accdb;Jet OLEDB:Database Password=sudeep;"); 
     con.Open(); 
     try 
     { 
     // con.Open(); 
      OleDbCommand cmd = new OleDbCommand("insert into barcode(id,dtime) values('" + textBox1.Text + "','"+label3.Text+"')",con); 
      cmd.ExecuteNonQuery(); 
      label2.Text = "User Authenticated"; 
      label2.ForeColor = Color.Green; 
      //MessageBox.Show("User Authenticated"); 

     } 

     catch(Exception) 
     { 
      label2.Text = "User Already registered"; 
      label2.ForeColor = Color.Red; 
      // MessageBox.Show(x.ToString()); 


     } 

請幫助。

我認爲問題在於文本框不會掃描條形碼字符串,因爲文本更改事件屬性只掃描一個字符並將其存儲在數據庫中。有沒有辦法從條形碼掃描字符串?

回答

2

通常這些條形碼掃描儀發送鍵盤事件,並確實導致每個數字單獨提出事件。

您應該看看條形碼掃描器是否終止使用單獨的鍵(例如回車鍵)的掃描,然後捕獲OnKeyDown事件。或者,如果條形碼的長度固定,則可以在對其執行操作之前檢查TextBox.Text屬性的長度。

+0

但是,如果文本長度增加呢?並且如果按鍵事件被處理,則每當他們按鍵被按下時讀取哪一個是耗時的。 –

+0

@abhishekkulkarni按鍵事件處理是否_your_類處理它們與否。就像ChrisLively建議的另一種方法是爲表單分配一個默認按鈕來處理回車鍵。 –

2

您不想陷入按鍵,因爲您會遇到剛纔看到的問題。

相反,您需要找出掃描儀發送的內容。大部分時間掃描儀在數據後發送CR/LF。這使您可以在表單上擁有一個按鈕,將其指定爲默認按鈕以接受「輸入」鍵,並從onclick事件中運行邏輯。

而「最」我的意思是幾乎所有的掃描儀,你會發現市場上沒有定製的不做這個。