C# “向下键”仅允许WPF文本框中的一个字符事件

C# “向下键”仅允许WPF文本框中的一个字符事件,c#,.net,wpf,C#,.net,Wpf,我有一个文本框,当输入的键为“return”时,该文本框有一个keydown事件。我有一个条形码阅读器,可以将文本读入其中,但它不会写入多个键,即只写入一个字母,比如说“a”,如果我写入第二个字母,则“a”会被覆盖为“b”,但不会变成“ab”。有人知道这是什么原因吗 private void barcodetexbox_KeyDown(object sender, KeyEventArgs e) { if (scannedString.Text != "" && e.Ke

我有一个文本框,当输入的键为“return”时,该文本框有一个keydown事件。我有一个条形码阅读器,可以将文本读入其中,但它不会写入多个键,即只写入一个字母,比如说“a”,如果我写入第二个字母,则“a”会被覆盖为“b”,但不会变成“ab”。有人知道这是什么原因吗

private void barcodetexbox_KeyDown(object sender, KeyEventArgs e)
{
    if (scannedString.Text != "" && e.Key==Key.Return)
    {
        //do something
    }
}
在“MainWindow.xaml”中


KeyDown事件旨在让您知道哪些键在某一时刻按下,而您的条形码阅读器似乎是在模拟键盘,因此您需要连接它发送的字符

在按键关闭事件中,您必须执行以下操作:

this.scannedString+=e.键

当您看到return时:


barcodeTextBox.Text=this.scannedString

不确定我是否理解您的问题,但我认为这是您的解决方案:

private void scannedString_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if ((sender as TextBox).Text !="" && e.Key == Key.Return)
        {
            MessageBox.Show((sender as TextBox).Text); // I mean do some thing
            (sender as TextBox).Clear();
        }
    }

我用条形码扫描仪对它进行了测试,效果很好。

什么是
做什么
做什么?当我复制粘贴时,它会打开一个基于条形码的新窗口,但当我尝试自己写条形码字符时,它只会写一个字符任何解决方案都会像你在做
条形码文本框.Text=e.Key而不是
条形码文本框.Text+=e.键
如果你能给我们看会有帮助,因为我怀疑与paul刚才说的完全一样。不,我没有做barcodetextbox。Text=e。键入任何位置,这样我可以在我的textbox中写入9或10个字符barcode textbox应该显示整个条形码,当它重新进入时显示另一个窗口,根据你的说法,没有办法在文本框中显示整个条形码,即使有办法,你也无法立即显示,如果你获取字符的唯一方法是通过按键事件,您可以发布从条形码阅读器获取数据的代码吗?没有代码,它只是自动一个接一个地读取整个条形码字符,并在完成时添加输入,直到光标所在的位置,并且可以写入。顺便说一句,如果您的条形码阅读器真的模拟键盘,我想你甚至不需要在文本框中设置字符串,你只需要检查是否按下了“Enter”(因为此时光标应该在文本框中,文本应该自动写入)我也想选择你的一个答案,但没有多个答案的选项:)
private void scannedString_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if ((sender as TextBox).Text !="" && e.Key == Key.Return)
        {
            MessageBox.Show((sender as TextBox).Text); // I mean do some thing
            (sender as TextBox).Clear();
        }
    }