如何在将数据输入文本框后自动显示数据?C#

如何在将数据输入文本框后自动显示数据?C#,c#,C#,我希望在不按任何按钮的情况下输入条形码编号时,数据会自动显示,默认情况下数量为1。我用txt\u no尝试了相同的方法,但它也需要按enter按钮 这是表格 代码如下: private void txtno_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { txtqty.Enabled = true;

我希望在不按任何按钮的情况下输入条形码编号时,数据会自动显示,默认情况下数量为1。我用
txt\u no
尝试了相同的方法,但它也需要按enter按钮

这是表格

代码如下:

 private void txtno_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {




                txtqty.Enabled = true;
                txtqty.Focus();
            }
        }

        private void txtqty_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                try
                {
                    string txt="Select * from products where id = '"+txtno.Text+"'";
                    MySqlCommand cmd = new MySqlCommand(txt,con);
                    con.Open();
                    MySqlDataReader r = cmd.ExecuteReader();
                    while (r.Read())
                    {
                        int price = int.Parse(txtqty.Text.Trim()) * int.Parse(r[4].ToString());
                        totalprice = totalprice + price;


                        dataGridView1.Rows.Add(dataGridView1.RowCount, r[0], r[1], txtqty.Text.Trim(), r[4], price);
                    }
                    lbitems.Text = "" + (dataGridView1.RowCount - 1) + "";
                    lbtotal.Text = "" + totalprice + "";

                    con.Close();


                    }



                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error From Database");


                }
                txtno.Focus();
                txtno.Clear();

                txtqty.Enabled = false;
                txtqty.Clear();


            }

            }

您需要更改txtno(即条形码文本框)的
TextChanged
事件处理程序。
为txtno添加
TextChanged
事件处理程序,如下所示

正如@HansKesting所建议的,您应该清理输入以避免sql注入

    private void txtno_TextChanged(object sender, KeyPressEventArgs e)
    {       
        if(!string.IsNullOrEmpty(txtno.Text))
        {
            txtqty.Enabled = true;
            txtqty.Focus();

            Search();
        }
        else
        {
            txtqty.Enabled = false;     
        }
    }

    private void txtqty_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == 13)
        {
            Search();
        }
    }

    private void Search()
    {
            try
            {
                string txt = "Select * from products where id = '" + txtno.Text + "'";
                MySqlCommand cmd = new MySqlCommand(txt, con);
                con.Open();
                MySqlDataReader r = cmd.ExecuteReader();
                while (r.Read())
                {
                    int price = int.Parse(txtqty.Text.Trim()) * int.Parse(r[4].ToString());
                    totalprice = totalprice + price;
                    dataGridView1.Rows.Add(dataGridView1.RowCount, r[0], r[1], txtqty.Text.Trim(), r[4], price);
                }

                lbitems.Text = "" + (dataGridView1.RowCount - 1) + "";
                lbtotal.Text = "" + totalprice + "";
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error From Database");
            }

            txtno.Focus();
            txtno.Clear();
            txtqty.Enabled = false;
            txtqty.Clear();
    }

条形码编号的格式是什么?长度?它的id INT我只是在表单中将名称更改为条形码,条形码的预期长度是多少?在图中我可以看到1234,所以条形码总是有4位数字吗?请不要以这种方式构建sql查询,请使用参数。当你说“不按任何按钮”时,请仔细阅读“sql注入”,这让我相信你的应用程序应该正在侦听条形码扫描仪集成件引发的事件。调查条形码扫描仪API或软件开发工具包提供的内容,以了解您可以在应用程序中处理哪些事件以使其自动化。