防止组合框分配项目并填充其文本

本文关键字:填充 文本 项目 分配 组合 | 更新日期: 2023-09-27 18:36:19

我正在尝试在下面的代码中过滤组合框的成员,但不幸的是,键入第一个字母组合框后,自动将第一个相关成员分配给组合框,其文本填充为所选项目的显示成员。 因此,用户无法继续键入其他单词以在项目之间进行搜索。

    private void cmbCompany_TextChanged(object sender, EventArgs e)
    {
        string QueryCompany = string.Format("select id,title from acc.dl union select null , null order by title");
        SqlDataAdapter DA1 = new SqlDataAdapter(QueryCompany, con);
        con.Open();
        DataTable DT1 = new DataTable();
        DA1.Fill(DT1);
        con.Close();
        DataView dv = new DataView(DT1);
        dv.RowFilter = "Title like '%" + cmbCompany.Text + "%'";
        cmbCompany.DisplayMember = "Title";
        cmbCompany.ValueMember = "id";
        cmbCompany.DataSource = dv;
    }

你能为这个问题提供任何解决方案吗?

防止组合框分配项目并填充其文本

设置组合框的这些属性。

cmbCompany.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cmbCompany.AutoCompleteSource = AutoCompleteSource.ListItems;

删除事件TextChanged,并绑定comboboxdatasource一次(加载或任何其他事件)。

private void Form1_Load(object sender, EventArgs e)
    {
        string QueryCompany = string.Format("select id,title from acc.dl union select null , null order by title");
        SqlDataAdapter DA1 = new SqlDataAdapter(QueryCompany, con);
        con.Open();
        DataTable DT1 = new DataTable();
        DA1.Fill(DT1);
        con.Close();
        cmbCompany.DataSource = DT1;
        cmbCompany.DisplayMember = "Title";
    }

这应该符合您的期望。

更改为此

cmbCompany.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cmbCompany.AutoCompleteSource = AutoCompleteSource.ListItems;