想学习如何使用文本框的值来设置另一个文本框的值(自动)

时间:2016-03-27 09:46:01

标签: c# winforms oracle11g textbox

我厌倦了在这部分代码上工作3天并在互联网上搜索,我需要帮助学习\知道如何使用自动完成textbox1并使用其值来将textbox2textbox3的值设置为我在互联网上搜索的代码,并从不同帖子中收集随机信息。

根据我得到的最快的方式......

public class PopulateProduct
{
        public string ProductDesc { get; set; }
        public decimal UnitPrice { get; set; }
}

Dictionary<string, PopulateProduct> dict = new Dictionary<string, PopulateProduct>();

public void load()
{
        string connstr = "user id=user;password=pwd";
        string cmdtxt = @"select PRODUCT_ID,DESCRIPTION,UNIT_PRICE 
                              from products";

        AutoCompleteStringCollection autocom = new AutoCompleteStringCollection();
        TB_PRODUCT_ID.AutoCompleteMode = AutoCompleteMode.Suggest;
        TB_PRODUCT_ID.AutoCompleteSource = AutoCompleteSource.CustomSource;
        TB_PRODUCT_ID.AutoCompleteCustomSource = autocom;

        using (OracleConnection conn = new OracleConnection(connstr))
        using (OracleCommand cmd = new OracleCommand(cmdtxt, conn))
        {
            try
            {
                conn.Open();
                OracleDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    dict.Add((string)dr["PRODUCT_ID"],
                        new PopulateProduct()
                        {
                            ProductDesc = (string)dr["DESCRIPTION"],
                            UnitPrice = (decimal)dr["UNIT_PRICE"]
                        });
                    autocom.Add(dr["PRODUCT_ID"].ToString());
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,"",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }
}

现在textbox1显示oracle数据库的建议表单时,不会显示任何建议,也没有将数据分配给textbox2textbox3

private void TB_PRODUCT_ID_TextChanged(object sender, EventArgs e)
{
        if (dict.ContainsKey(TB_PRODUCT_ID.Text)) 
        {
            TB_PRODUCTS_DESC.Text = dict[TB_PRODUCT_ID.Text].ProductDesc;
            TB_UNIT_PRICE.Text = dict[TB_PRODUCT_ID.Text].UnitPrice.ToString();
        }
}

1 个答案:

答案 0 :(得分:0)

我不喜欢使用TextChanged事件,特别是在自动填充文本框上触发其他操作,因为我从来没有弄清楚自动填充值何时显示在文本中。当我知道已经选择了值时,我更愿意让用户完全离开盒子。即使这对您不起作用,也请尝试将您的代码放入Leave事件中,看看它是否有效。如果确实如此,那么您的问题可能是TB_PRODUCT_ID.Text不包含自动完成的值。