0

我已經使用文本框製作了Windows窗體應用程序。我將強制用戶使用條形碼掃描器,因此應禁用鍵盤輸入。 KeyPressed事件不起作用,因爲也禁止條形碼掃描器的輸入。Texbox輸入,禁用鍵盤,保持條形碼掃描器

我想也許我可以在TextChanged事件上設置一個計時器,但我真的不知道它是如何工作的。

有人一個好主意嗎?

+0

您應該可以將文本框的啓用屬性設置爲false,然後使用條碼掃描器提供的任何API掛接到掃描事件並將文本框的值設置爲該掃描的結果。 –

+1

希望它有幫助http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/ – Steve

回答

2

根據您的描述,我假設您的條碼掃描器是一款HID條碼掃描器。如果是這樣,這裏沒有簡單的答案,因爲條形碼掃描器的功能與鍵盤完全一樣。禁用鍵盤輸入將禁用條形碼掃描儀。

我以前做過這一點,有幾個解決方案,我所知道的:

  1. 使用條形碼掃描儀是不是HID條形碼掃描儀。例如:Serial,或者類似的東西。
  2. 配置條形碼掃描器在條碼掃描的開始和結束時發送特殊字符。 (如果您有針對特定型號條形碼掃描儀的手冊,則可以執行此操作。)編寫您的KeyPressed事件以偵聽這些特殊字符,作爲從條形碼掃描儀獲取數據的信號。當它看到它們時,啓用和禁用文本框。
  3. 使用Windows API調用與條形碼掃描器直接通信。這需要了解條形碼掃描器的VID和PID,以及一些API的詳細知識,如GetRawInputDeviceInfo,GetRawInputData和RegisterRawInputDevices。這是非常強大的,因爲您可以從應用程序的任何位置接收條形碼輸入,但它非常複雜。

但是,有一點需要注意:您可能根本不想禁用文本框。如果條碼損壞,掃描儀無法讀取,會怎麼樣?您始終希望用戶能夠手動輸入條形碼。下次您通過商店的收銀機時,請注意總有一種方法可以手動輸入條形碼。

+0

謝謝你,另一個條碼掃描器不是一個選項。是否可以用計時器或其他東西?條形碼掃描儀的輸入比人工輸入快得多。 – Marten

+1

這取決於條形碼掃描儀和人。我見過慢條碼掃描儀和快速人類。我建議避免基於時間的解決方案。最終,這裏的根本問題是條形碼掃描儀的界面很糟糕。他們假裝他們是鍵盤,並沒有提供有用的API來訪問它們。 –

相關問題