WPF文本框事件捕获多个字符

本文关键字:字符 文本 事件 WPF | 更新日期: 2023-09-27 18:25:26

我有条形码扫描仪。我需要将条形码中的字符串捕获到文本框中。文本框中的最后一个单词将由来自条形码扫描仪的多个代码组成。我应该使用什么活动?

例如:条形码发送值123

我尝试了PreviewTextInput事件和e.Text,但它只捕获了第一个字符1。当我使用条形码扫描仪时,如何将所有添加的字符都添加到文本框中?

WPF文本框事件捕获多个字符

TextBox不会丢失任何内容。如果e.Text"1",那么这只意味着您的扫描仪将字符一个接一个地发送到TextBox。这意味着您将为每个添加的字符获得一个事件。

你的方法真的很巧妙。TextBox对条形码、扫描仪一无所知。等等。它只是显示文本。如果你的扫描仪完成了扫描,你为什么要问它?这毫无意义。别管可怜的TextBox。如果你想知道扫描过程何时完成,那么你应该向类中添加一个适当的事件,它实际上读取条形码。然后,在该事件触发后,您应该通过TextBox.Text或使用其他方式(例如访问viewmodel属性)访问结果字符串。

编辑:wpf事件的问题是,如果你想让控件接收键盘事件,它需要有"键盘焦点"。如果显示MessageBox,则TextBox会失去焦点,因此不再接收事件。再次,不要使用TextBox。您需要编写一个专用类(即BarcodeReader),它将为您处理键盘事件,然后在读取条形码时激发事件。您可以使用BarcodeReader中的Keyboard类来处理按下的按钮。

如果您在后端使用C#,那么您可以看看这个问题:使用wpf应用程序读取条形码