0

我想要一个组合框功能,例如-

组合框显示项目并具有自动完成功能,因为项目列表非常大。

我希望用户能够通过在具有自动完成功能的框中键入内容来从项目列表中选择一个值 - 如果用户键入不在列表中的内容,则会自动选择一个可用值。

我不想将错误的文本发送到数据库。

这个组合框是可编辑的,自动完成,但不接受可编辑的值,用户必须通过键入在列表中选择...。

private void FrmGroupCreation_Load(object sender, EventArgs e)
    {
        string con = ConfigurationManager.ConnectionStrings["SaiCon"].ConnectionString;
        using (SqlConnection connect=new SqlConnection(con))
        {
            //data table for combox type of account 
            SqlDataAdapter da = new SqlDataAdapter("SELECT *FROM dbo.Type_of_Account",connect);

            DataTable dt=new DataTable();
            da.Fill(dt);
            for (int i = 0; i < dt.Rows.Count ; i++)
            {
                cbTypeofAccount.Items.Add(dt.Rows[i]["type_Of_Acct"]);
            }
            //data table for combobox principle account type
            SqlDataAdapter da1 = new SqlDataAdapter("SELECT *FROM dbo.Principle_Account", connect);

            DataTable dt1 = new DataTable();
            da1.Fill(dt1);
            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                cbPrinciple_account_type.Items.Add(dt1.Rows[i]["Principle_Account"]);
            }
            //data table for combobox Under the group
            SqlDataAdapter da2 = new SqlDataAdapter("SELECT *FROM dbo.Head_group_Account", connect);

            DataTable dt2 = new DataTable();
            da2.Fill(dt2);
            for (int i = 0; i < dt2.Rows.Count; i++)
            {
                cbUnder_the_group.Items.Add(dt2.Rows[i]["Account_name"]);
            }
        }

    }
4

1 回答 1

1

您必须执行以下操作:

1-而不是做循环来填充组合框设置组合框数据源等于数据表并设置值成员和显示成员

 cbTypeofAccount.DataSource = dt;
 cbTypeofAccount.DisplayMember = "type_Of_Acct";
 cbTypeofAccount.ValueMember = "your table id";

2-更改组合框的下拉样式以使其可编辑

 cbTypeofAccount.DropDownStyle = ComboBoxStyle.DropDown;
于 2013-03-29T16:35:59.450 回答