How to capture whole Barcode value on Winform without using TextChanged event?

后端 未结 3 449
广开言路
广开言路 2020-12-06 19:10

When a barcode is scanned on form1, I make a call to database to get the item for this barcode and open form2 with pre-populated data.

If I use text changed event t

相关标签:
3条回答
  • 2020-12-06 19:48

    You could try to let the event wait for 1 second, or long enough to finish scanning

    private async void txt_Barcode_TextChanged(object sender, EventArgs e)
    {
        await Task.Delay(1000);
        con.Open();
        GenerateInvoice gn = new GenerateInvoice();
        string query = "SELECT * FROM dbo.Inventory WHERE Barcode = '" + txt_Barcode.Text + "' ";
    
        SqlCommand cmd = new SqlCommand(query, con);
        SqlDataReader dr = cmd.ExecuteReader();
    
    
        while (DR1.Read())
        {
            gn.txt_Barcode.Text = dr["Barcode"].ToString();
            gn.txt_ProductName.Text = dr["ProductName"].ToString();
            gn.txt_Price.Text = dr["SellingPrice"].ToString();
            gn.txt_QTY.Text = 1.ToString();
            gn.txt_Total.Text = dr["SellingPrice"].ToString();
    
        }
        con.Close();
    }
    
    0 讨论(0)
  • 2020-12-06 19:50

    You'll probably see a few of my answers on this topic.

    Improve Barcode search in a Textbox C#

    distinguish between the scanner and the keyboard

    Barcode scanner with a WPF application

    If I was to do it again and the first time was a long time ago, I'd opt for RawInput's and determine which device is the BarCode scanner. Using prefix and suffix are reliable although they vary depending on the device. Capturing the raw input abstracts this hardware implementation.

    Code Project article and download: Using Raw Input from C# to handle multiple keyboards

    See how I can get input from any source so I dont even need the user to put a cursor on a textbox or use Form.KeyPreview I can get the input filtered by device.

    0 讨论(0)
  • 2020-12-06 19:53

    This is a result of the scanner in WedgeMode. basically it acts as a keyboard and every character scanned creates a text changed event.

    There are many solves.

    You could use an api supplied by the company you bought the scanner off, instead of wedgemode

    However, a simple solve is to put a prefix and suffix (like the ascii codes, STX and ETX ) on the scanner (there are usually settings for this supplied by the scanner), that way you know when you have complete bar-code data.

    When you see a valid barcode, then you make one event, not an event for each character scanned.

    0 讨论(0)
提交回复
热议问题