我想在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;
}
}
感谢您的建议
答案 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","");
}