【发布时间】:2017-05-17 13:20:05
【问题描述】:
我正在开发 POS 应用程序,它是一个 Windows 应用程序。
我们的条形码长度从 5 到 16。这里我使用文本框更改事件来获取扫描的条形码,所以在扫描条形码后,我需要根据条形码检查服务器上的详细信息。这里的问题是文本框事件,当我扫描项目时,每个数字都会调用该事件。最多 5 个可以,但之后我需要一个一个检查 6 到 16 个字符。由于这种条码扫描性能降低。
【问题讨论】:
我正在开发 POS 应用程序,它是一个 Windows 应用程序。
我们的条形码长度从 5 到 16。这里我使用文本框更改事件来获取扫描的条形码,所以在扫描条形码后,我需要根据条形码检查服务器上的详细信息。这里的问题是文本框事件,当我扫描项目时,每个数字都会调用该事件。最多 5 个可以,但之后我需要一个一个检查 6 到 16 个字符。由于这种条码扫描性能降低。
【问题讨论】:
您提供的信息非常少,但是假设您在 HID 模式下使用条形码扫描仪(模拟键盘而不是直接连接到串行端口)并假设您正在使用 TextChanged 事件,那么是的,该事件每次都会触发字符被附加到文本框。
因此,您需要做的是在检查条形码之前引入一个计时器以引入延迟(例如 200 毫秒),如果事件在计时器结束之前再次触发,则重置计时器,否则当计时器触发时检查条形码.
private System.Timers.Timer barcodeTimer = new System.Timers.Timer(200);
private void barcodeTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
barcodeTimer.Stop();
barcodeTimer.Start();
}
private void barcodeTimer_Elapsed(object sender, Timers.ElapsedEventArgs e)
{
barcodeTimer.Stop();
processBarcode();
}
(从 VB.Net 转换而来,如有错误请见谅)
【讨论】: