给定秒后的textchanged事件触发器

时间:2015-03-24 10:59:24

标签: c#

我的要求是,有一个文本框和一个数据网格,当我通过扫描在文本框中输入文本时,如果该值存在于数据库中,则应将其添加到datagrid,文本框值应为空。 我已将此功能保留在textbox textchanged事件中。

  VALUE:
  16789
  35688
  1678934
  097544 

如果我扫描' 1678934',则对应于' 16789'在网格中添加,只有34个保留在文本框中。我该如何克服这一点。我应该放置一些计时器,以便一旦扫描完成,值可能会被添加到网格中?我该怎么做!或者还有其他事件吗?

我使用了以下代码

    private void txtValue_TextChanged(object sender, EventArgs e)
    {
            if (txtValue.Text != "")
            {
                dataGridView1.Columns.Clear();
                strValue = "SELECT NAME FROM EMPDETAIL WHERE ID = @input";
                MySqlCommand cmdValue = new MySqlCommand(strValue, connection);
                connection.Open();
                cmdValue.Parameters.AddWithValue("@input", input);
                MySqlDataAdapter adapterValue = new MySqlDataAdapter(cmdValue);
                DataTable dtValue = new DataTable();
                adapterValue.Fill(dtValue);
                dataGridView1.DataSource = dtValue;
                connection.Close();
            }
    }

编辑:

以下是实现上述功能的代码(根据@ Daniel的答案)

  private void textBox2_KeyDown(object sender, KeyEventArgs e)
    { 
          if (txtValue.Text != "")
            {
                if (e.KeyCode == Keys.Enter)
                {
                dataGridView1.Columns.Clear();
                strValue = "SELECT NAME FROM EMPDETAIL WHERE ID = @input";
                MySqlCommand cmdValue = new MySqlCommand(strValue, connection);
                connection.Open();
                cmdValue.Parameters.AddWithValue("@input", input);
                MySqlDataAdapter adapterValue = new MySqlDataAdapter(cmdValue);
                DataTable dtValue = new DataTable();
                adapterValue.Fill(dtValue);
                dataGridView1.DataSource = dtValue;
                connection.Close();
                }
            }
         }

1 个答案:

答案 0 :(得分:1)

问题当然是如果产品“123”存在,则在扫描产品“1234”时会发现它。您可以使用您建议的计时器解决此问题,但您真的不希望这样。

条形码扫描仪(通常,可配置)在扫描后添加字符,例如换行符(\n)。

不是在TextChanged事件中查找记录,而是在表单中添加一个默认按钮(该新行将被解释为Enter键按下),或者使用KeyPress事件找出何时输入终止字符