WPF - 将文本设置为Window作为TextBox

时间:2016-12-22 05:50:33

标签: wpf

我想在WPF窗口中捕获文本。例如,应用程序窗口将聚焦,我将在一些文本框中无需关注地编写。我的应用程序从条形码阅读器输入。我希望用户能够在不点击某些文本框的情况下阅读条形码 - 以便更快地完成工作。有可能的?我尝试了事件PreviewKeyDown但是应用程序只捕获第一个char。我的条形码格式为#12000012546,条形码阅读器模拟数字键盘(Shift + num) - 例如,而不是char#KeyEventArgs仅返回" System"。这是我的代码:

   static string text = string.Empty;
   private void MainWindow_OnPreviewKeyDown(object sender, KeyEventArgs e)
   {
      text += e.Key.ToString();
      if (text.Length == 12)
      {
         MessageBox.Show(text)
         text = null;
       }
     }

感谢您的建议

1 个答案:

答案 0 :(得分:3)

如果你的条形码阅读器真的按键(Shift + number)来执行你的#字符,那么请检查一下。这是在西班牙语键盘上测试的,因此#字符位于我的3键上(Key.D3

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
    var regex = new Regex("(#)|([0-9])");
    var keystr = e.Key.ToString();

    if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
    {
        if (regex.Match(keystr).Success)
            if (e.Key == Key.D3) textBox1.Text += "#";
    }
    else if (regex.Match(keystr).Success)
        textBox1.Text += keystr.Replace("D","");
}