提高一个文本框C#条码搜索(Improve Barcode search in a Textbox

2019-08-21 02:45发布

在一个WinForm C#应用程序,我有一个Barcode_textbox。 在TextChanged事件中,我有一个SQL查询,以检查其是条形码数据库TextBox.Text值。 问题是,每个输入的数字SQL查询将被解雇,因此,如果长度13的条形码会在数据库中13检查它正在极其缓慢。

那么,什么是文本框事件仅当用户停止在文本框(或读码器读stpos)编写被触发,或什么是用于检查数据库中的条形码的最佳解决方案。 需要注意的是bacode是不同长度的

Answer 1:

我记得我是怎么做到成功。

我把定时器控制在我的一秒钟的时间间隔(1000级毫安的)应用程序。 然后,我的Form.KeyPreview属性设置为True。

在Form按键下压事件我保存击键。 在Timer.Tick事件检查所记录的关键笔划的长度超过12点左右的字符。

然后关火调用SQL一次。 当您成功返回的记录(或者如果文本框包含超过说20个字符)清除存储的击键。


见更新,截至2019三月: https://stackoverflow.com/a/55411255/495455



Answer 2:

使用定时器以这种方式,当用户停止在你的文本框为给定的小时间打字例如1秒才从数据库中获取数据...

您也可以放置在用户与反键入的字符的检查,这样当它超过了最低(即你的密钥可以是最小尺寸)获得的数据...将节省大量的时间



Answer 3:

计时器是一个可怕的解决了这一点。

使用KeyUp的事件TextBox和检查回车。 大多数条码扫描器提交代码后回车..如果他们没有在默认情况下做到这一点,他们与条形码配置它这样做。

您可以通过打开记事本和条形码扫描后条码到它进行测试。 每个人将在新的一行。



Answer 4:

您可以使用验证事件检查文本框的内容。
您的用户将被要求按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);
     }

}

假设下一个控制是利用插入的条形码(添加)(或文本框插入由条形码所描述的项目的数量)执行什么命令。 过了一会儿,所有的操作变得非常自然的数据输入处理



Answer 5:

什么做查询异步?

如果你不能或想要一个简单的肮脏的解决方案,那么我只想坚持定时器



文章来源: Improve Barcode search in a Textbox C#