如何在消息框之后清除文本框?

时间:2015-11-11 08:31:06

标签: c#

我正在使用visual studio编写扫描程序。

如下面的代码所示,我对文本框进行了一些检查(名称为txt_item), 其中一项检查是检查是否存在扫描的项目 数据库。如果该项存在于数据库中,它将执行某些操作。否则呢 将提示错误信息,要求包装商重新扫描条形码 并清除" txt_item"中的内容文本框。

应该一次提示消息框,但现在它会出现两次。有谁知道如何解决这个问题?

private void txt_item_TextChanged(object sender, EventArgs e)
{
    SqlConnection Conn = Global_Variable.GetConnectionString();
    SqlCommand cmd;

    cmd = new SqlCommand("Select  statement...", Conn);

    try
    {
        if (Conn.State == ConnectionState.Closed)
        {
            Conn.Open();
        }

        cmd.CommandType = CommandType.Text;

        SqlDataReader sdr = cmd.ExecuteReader();

        if (sdr.HasRows != null && sdr.HasRows)
        {
            cmd.Dispose();
            sdr.Dispose();

            SqlDataAdapter itemDataAdapter = new SqlDataAdapter(cmd);
            DataTable itemDataTable = new DataTable();

            itemDataTable.Rows.Clear();
            itemDataAdapter.Fill(itemDataTable);

            // blah blah blah...

            return;
        }
        else
        {
            if (MessageBox.Show("Invalid Item, Please re-enter again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
            {
                txt_item.Clear(); ;
            }
             return;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        cmd.Dispose();

        if (Conn.State == ConnectionState.Open)
        {
            Conn.Close();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您正在清除文本更改事件中的文本框。清除文本将再次调用此事件。 不要使用退货;声明,连接最终自动处理。

答案 1 :(得分:1)

首先感谢您的建议和指导。 最后,我找到了解决这个问题的解决方案。

赞赏。 :)

解决方案如下:

  if (MessageBox.Show("Invalid Item: '" +txt_item.Text+ "', Please re-enter again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
  {
     // Code added
     txt_item.TextChanged -= txt_item_TextChanged;
     txt_item.Clear();
     txt_item.TextChanged += txt_item_TextChanged;
     return;
   }