2014-02-28 188 views
0

我正在Windows Mobile 6上開發應用程序(使用緊湊框架)。該應用程序使用條形碼掃描儀。我想在菜單中實現鍵盤快捷鍵。我在菜單中實現了按鍵事件,因此如果用戶按下1,第一個菜單項將打開,等等。但我的問題是,如果用戶在應用程序在菜單中時用設備掃描條形碼,則應用程序將獲取由掃描儀讀取的條形碼並將其轉換爲按鍵。由於我在子菜單中實現了鍵盤快捷鍵,這意味着如果用戶在菜單中掃描條形碼,則應用程序會在菜單之間移動。帶鍵盤快捷鍵的菜單

我不是100%肯定,但似乎我使用的設備有條形碼閱讀器爲「鍵盤楔」,當他們是那種你從他們那裏得到文本如果用戶從鍵盤鍵入它。

這是怎麼了菜單按鍵來實現:

private void mainList_KeyPress(object sender, KeyPressEventArgs e) 
    { 
      switch (e.KeyChar) 
      { 
       case (char)Keys.D1: 
        productRequestBtn_Click(sender, e); 
        break; 
       case (char)Keys.D2: 
        warehouseBtn_Click(sender, e); 
        break; 
       case (char)Keys.D3: 
        inventoryBtn_Click(sender, e); 
        break; 
       case (char)Keys.D4: 
        ordersBtn_Click(sender, e); 
        break; 
       case (char)Keys.D5: 
        discountBtn_Click(sender, e); 
        break; 
       case (char)Keys.D6: 
        intakeBtn_Click(sender, e); 
        break; 
       case (char)Keys.F1: 
        Close(); 
        break; 
      } 
    } 

我已經嘗試了不同的方式來實現,但仍未能解決我的問題。

如果有人有任何想法如何可以改變的菜單來實現鍵盤快捷方式,阻止條形碼閱讀器或任何可能的情況相同的工作,我真的很感激它。

+0

關閉楔形模式,並使用供應商提供的條形碼SDK來直接控制(以及從接收掃描事件)的集成式掃描器。 – tcarvin

+0

由於應用程序需要使用不同的供應商設備,因此我無法使用供應商SDK。 – martinv

+0

由您決定,但我發現它很值得花費精力抽出供應商SDK併爲您需要的支持添加支持。那裏沒有那麼多的數據收集設備供應商。這就是說,如果你堅持使用楔形模式,那麼按照@josef的建議使用前導碼和後導碼。 – tcarvin

回答

1

是的,使用條形碼掃描儀SDK將是最好的解決方案。

如果想避免給製造商的特別的東西,你可以使用鍵盤楔子POS-和/或前同步設置解決方法您的問題代碼。

如果不是所有的楔實現支持之前和之後的掃描的數據添加一個順序的,這可以被稱爲前同步碼和postanble。使用此功能,您可以更改代碼,例如,如果以*開頭並以#結尾,則忽略和按鍵。如果是這樣,只需在設備的楔形設置中添加*作爲前導碼和#作爲後同步碼。使用這種技術,您必須先刪除條形碼輸入字段中的字符,然後才能繼續並驗證/處理條形碼數據。