在一个WinForm C#应用程序,我有一个Barcode_textbox。 在TextChanged
事件中,我有一个SQL查询,以检查其是条形码数据库TextBox.Text值。 问题是,每个输入的数字SQL查询将被解雇,因此,如果长度13的条形码会在数据库中13检查它正在极其缓慢。
那么,什么是文本框事件仅当用户停止在文本框(或读码器读stpos)编写被触发,或什么是用于检查数据库中的条形码的最佳解决方案。 需要注意的是bacode是不同长度的
在一个WinForm C#应用程序,我有一个Barcode_textbox。 在TextChanged
事件中,我有一个SQL查询,以检查其是条形码数据库TextBox.Text值。 问题是,每个输入的数字SQL查询将被解雇,因此,如果长度13的条形码会在数据库中13检查它正在极其缓慢。
那么,什么是文本框事件仅当用户停止在文本框(或读码器读stpos)编写被触发,或什么是用于检查数据库中的条形码的最佳解决方案。 需要注意的是bacode是不同长度的
我记得我是怎么做到成功。
我把定时器控制在我的一秒钟的时间间隔(1000级毫安的)应用程序。 然后,我的Form.KeyPreview属性设置为True。
在Form按键下压事件我保存击键。 在Timer.Tick事件检查所记录的关键笔划的长度超过12点左右的字符。
然后关火调用SQL一次。 当您成功返回的记录(或者如果文本框包含超过说20个字符)清除存储的击键。
见更新,截至2019三月: https://stackoverflow.com/a/55411255/495455
使用定时器以这种方式,当用户停止在你的文本框为给定的小时间打字例如1秒才从数据库中获取数据...
您也可以放置在用户与反键入的字符的检查,这样当它超过了最低(即你的密钥可以是最小尺寸)获得的数据...将节省大量的时间
计时器是一个可怕的解决了这一点。
使用KeyUp
的事件TextBox
和检查回车。 大多数条码扫描器提交代码后回车..如果他们没有在默认情况下做到这一点,他们与条形码配置它这样做。
您可以通过打开记事本和条形码扫描后条码到它进行测试。 每个人将在新的一行。
您可以使用验证事件检查文本框的内容。
您的用户将被要求按TAB键来改变当前焦点从文本框到下一个控制的TabOrder以下和验证事件将被触发
private void textBox_BarCode_Validating(object sender, CancelEventArgs e)
{
// Code to check the barcode on the SQL database....
if(!ValidBarCode(textBox1.Text))
{
// Cancel the event and select the text to be corrected by the user.
e.Cancel = true;
textBox1.Select(0, textBox1.Text.Length);
}
}
假设下一个控制是利用插入的条形码(添加)(或文本框插入由条形码所描述的项目的数量)执行什么命令。 过了一会儿,所有的操作变得非常自然的数据输入处理
什么做查询异步?
如果你不能或想要一个简单的肮脏的解决方案,那么我只想坚持定时器