防止组合框分配项目并填充其文本
本文关键字:填充 文本 项目 分配 组合 | 更新日期: 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
,并绑定combobox
的datasource
一次(加载或任何其他事件)。
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;