2016-01-25 69 views
0

我在Windows 10中的通用Windows應用程序中有一個xaml頁面。該頁面包含一個文本框。該應用程序使用鍵盤MSR(磁條閱讀器)來刷卡。區分鍵盤MSR和觸摸屏鍵盤Windows 10中的通用Windows應用程序

現在,當我專注於文本框並在MSR中刷卡時,它將在文本框中打印所有數據。 BUt,我希望用戶只需點擊觸摸屏鍵盤上的文本並將其限制在MSR之外。

請幫忙。

回答

0
private DispatcherTimer _handledTimer; 

    private bool _isHandled = false; 

    private bool _isShift = false; 

    private void txtEmailKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e) 
    { 
     if (e.Key == VirtualKey.Shift) 
     { 
      _isShift = true; 
     } 
     else 
     { 
      if (ToChar(e.Key, _isShift)) 
      { 
       _isHandled = true; 
       StartDispatcher(); 
      } 
      _isShift = false; 
     } 
     e.Handled = _isHandled; 
    } 


    public void StartDispatcher() 
    { 
     if (_handledTimer == null) 
     { 
      _handledTimer = new DispatcherTimer(); 
      _handledTimer.Interval = new TimeSpan(0, 0, 1); 
      _handledTimer.Tick += handledTimerTick; 
     } 
     _handledTimer.Stop(); 
     _handledTimer.Start(); 
    } 

    private void handledTimerTick(object sender, object e) 
    { 
     _handledTimer.Stop(); 
     _handledTimer = null; 
     _isHandled = false; 
    } 

    private bool ToChar(VirtualKey key, bool shift) 
    { 
     bool hasSpecificChar = false; 
     // look for % 
     if (53 == (int)key && shift) 
     { 
      hasSpecificChar = true; 
     } 

     // look for ';' 
     if (186 == (int)key) 
     { 
      hasSpecificChar = true; 
     } 
     return hasSpecificChar; 
    } 
相關問題