2013-07-30 63 views
1

我有條形碼掃描儀。我需要從條形碼中將字符串捕獲到文本框中。文本框中的最後一個詞將由來自條形碼掃描儀的多個代碼組成。 我應該使用哪些事件?WPF文本框事件捕獲多個字符

例如: 條形碼發送值123

我試過PreviewTextInput事件和e.Text,但它只捕獲到第一個字符1。如何在使用條形碼掃描器時將所有添加的字符添加到文本框?

+1

看看這個鏈接:http://dotnettrails.wordpress.com/2010/03/11/capturing-barcode-scan-using-c/它給你兩個選擇:使用計時器來延遲text_changed事件或在keyUp事件中捕獲回車鍵(它假定條形碼掃描器將在掃描結束時發送回車符) – Riv

回答

2

文本框不會失去任何東西。如果e.Text"1",那麼它只意味着您的掃描儀將字符逐個發送到TextBox。意思是每增加一個角色就會得到一個事件。

你的方法真的很奇怪。對條形碼,掃描儀不瞭解。它只是顯示文本。爲什麼你問,如果你的掃描儀完成掃描?這是沒有意義的。單獨留下差TextBox。如果您想知道掃描過程何時完成,您應該爲班級添加適當的事件,這實際上是讀取條形碼。然後,在此事件觸發後,您應該通過TextBox.Text或使用其他方法(例如通過訪問viewmodel屬性)訪問所產生的字符串。

編輯:事件與wpf事件,是你的控制需要「鍵盤焦點」,如果你想它接收鍵盤事件。如果您顯示MessageBox,則您的TextBox失去焦點,因此不再接收事件。再次,離開TextBox單獨。您需要編寫一個專門的類(即BarcodeReader),它將爲您處理鍵盤事件,然後在讀取條形碼時觸發事件。您可以在BarcodeReader中使用Keyboard類來處理按下的按鈕。

+0

實際上它失去了它的某種方式...條碼掃描器的工作就像它模擬鍵盤,它發送按鍵流..我想每個角色我會得到一個事件,但是當它從3個字符中得到條形碼(或字符串)時,事件只會引發一次,文本框最後也包含第一個字符......當我不使用事件時,它會得到所有3個字符(在事件我只有一個'MessageBox.Show') – Maarty

+0

@Maarty,看到我的回答 –

+0

嗯不完全是我想要的,但你指示我更好的方式,謝謝.. +1 – Maarty

1

如果您使用的是後端C#,那麼你可以看看這個問題:Reading bar codes using wpf application

+0

我的條形碼工作方式類似於我認爲它模擬鍵盤,所以它發送字符流(或當我不使用任何事件對文本框和使用掃描器然後(我發送代碼'123'),將在文本框中有'123' ..但是當我嘗試在一些事件('TextChanged'或'PreviewTextInput')中捕獲它只捕獲第一個字符('1'),其餘2個字符消失 – Maarty