TextBox:TextChanged事件-输入x个字符时自动验证

|| 我有一个可以从USB扫描仪读取条形码的应用程序。我想在将条形码输入特定文本框中后立即进行数据库查找。 显然,我要将代码放入TextChanged事件处理程序中,但是我有一个小问题,即所读取的条形码可能是41个字符或43个字符。问题是,我怎么知道正在输入哪种类型的代码。扫描程序只需将代码作为字符串输入到任何具有焦点的字段中(就像它是通过键盘输入的一样),因此我无法查询扫描程序来确定代码长度。 到目前为止,我已经想到了两种方法: 检测第一个字符,等待x.x秒,然后进行查找-留出足够的时间以输入完整的代码 检测第41个字符,等待0.x秒,然后进行查找。 好的,我确定它们可以正常工作,但是还有其他雄辩的解决方案吗? 结论: 一些有用的建议,但是Ondrej启发了我的方案的最简单解决方案。这43个字符的代码有两个固定用于所有代码的字符-这两个字符的存在(或不存在)意味着我知道要等是否存在这两个字符,而只有41个字符。 我只需要证实我的怀疑,即41个字符代码在特定位置不能有这对字符-我很确定是这种情况。     
已邀请:
一种选择是在读取第41个字符后执行异步查找,同时仍在UI线程中等待另外两个字符。如果您在该条形码上遇到问题,可以停止等待并显示结果。或者,如果在查找过程中输入了第42个字符,则可以中止它,并在输入第43个字符时立即开始新的查找。但是,这假定没有43个字符的条形码以现有的41个字符的条形码开头。 我还将查看条形码是否包含某种模式(例如:41个字符的代码的第9个字符带有X,而43个字符的代码则没有),然后在输入时对其进行扫描。     
您可能有一个计时器,并且在没有变化的情况下,例如说1秒,则它应该是41或43个字符长。     
我将数据库查找调用包装在后台工作程序类中。 在TextChanged事件处理程序上,我要做的第一件事是如果backgroundworker正在工作,我将取消它。然后,如果文本长度为41或43,我将在后台工作程序中处理数据库调用。 这样,如果用户敲击41个字符,则会发生呼叫,如果他们键入第42个字符,则呼叫将被取消,但是,如果用户键入43,则删除两个字符(以还原为41个字符),您仍然做适当的查找。     

要回复问题请先登录注册