【问题标题】:Barcode not scanned properly in textbox c#条形码未在文本框 c# 中正确扫描
【发布时间】:2013-09-26 14:02:45
【问题描述】:

我有一个条形码扫描应用程序,它在文本框的文本更改事件上运行。它验证条形码是否先前被扫描到访问数据库并相应地验证用户。

我有一个问题,在文本框中看到的数字只是条形码读取的一位数(第一位)。

这个问题是因为文本更改属性被立即验证了吗?

代码如下

private void textBox1_TextChanged(object sender, EventArgs e)
    {
        textBox1.SelectAll();
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\dell\Documents\Database5.accdb;Jet OLEDB:Database Password=sudeep;");
        con.Open();
        try
        {
        //    con.Open();
             OleDbCommand cmd = new OleDbCommand("insert into barcode(id,dtime) values('" + textBox1.Text + "','"+label3.Text+"')",con);
            cmd.ExecuteNonQuery();
            label2.Text = "User Authenticated";
            label2.ForeColor = Color.Green;
            //MessageBox.Show("User Authenticated");

        }

        catch(Exception)
        {
            label2.Text = "User Already registered";
            label2.ForeColor = Color.Red;
           // MessageBox.Show(x.ToString());


        }

请帮忙。

我认为问题在于文本框不扫描条形码的字符串,因为由于文本更改事件属性,只有一个字符被扫描并存储在数据库中。有没有办法从条形码中扫描字符串?

【问题讨论】:

    标签: c#


    【解决方案1】:

    通常,这些条码扫描器会发送键盘事件,并且确实会为每个数字单独引发事件。

    您应该查看条形码扫描仪是否使用单独的键(例如 enter 键)终止扫描,并改为捕获 OnKeyDown 事件。或者,如果条形码是固定长度的,您可以在对其进行操作之前检查TextBox.Text 属性的长度。

    【讨论】:

    • 但是如果文本长度增加了怎么办?并且如果一个按键事件被处理,那么每次按键都被按下以读取哪个是耗时的。
    • @abhishekkulkarni 按键事件无论你的类是否处理它们都会被处理。就像 ChrisLively 建议的那样,另一种方法是为您的表单分配一个默认按钮来处理回车键。
    【解决方案2】:

    您不想挂钩 keypress,因为您会遇到刚刚看到的问题。

    相反,您需要找出扫描仪发送的其他内容。大多数情况下,扫描仪会在数据之后发送 CR/LF。这允许您在表单上有一个按钮,指定为默认按钮以接受“输入”键并运行您的逻辑关闭它的 onclick 事件。

    我所说的“大多数”是指您在市场上找到的几乎所有不是为不这样做而定制的扫描仪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 2015-05-26
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      相关资源
      最近更新 更多