我试图通过多种方式使用SUBSTRING搜索在C#中使用自动完成功能。最终会遇到同样的问题。我的逻辑确实每次都返回正确的信息集,但我无法按时显示(实时更改可用的下拉列表)
喜欢打字' A'用
填充下拉列表Adeel Nazir
Abdul Muqeet
Aun Abbas
然后我删除了' A'并重新输入' N'然后我的代码执行并返回
Adeel Nazir
Aun Abbas
但我的下拉菜单未更新。
我尝试刷新文本字段和许多其他方式..
注意:我每次都使用函数而不是运行查询来搜索子字符串。但主要问题是每次更新下拉。
private void key_up(object sender, KeyEventArgs e)
{
mycollection.Clear(); // autocompletecustomsource
this.hostName.Refresh();
using (SqlConnection con = new SqlConnection(Connection.con))
{
string cmd = " select hFirst+' '+hLast as Name from Hosts where hFirst+' '+hLast like '%" + this.hostName.Text + "%'";
con.Open();
using (command = new SqlCommand(cmd, con))
{
reader = command.ExecuteReader();
while (reader.Read())
{
mycollection.Add(reader["Name"].ToString());
}
hostName.AutoCompleteCustomSource = mycollection;
}
con.Close();
}
}
编辑:
经过大量研究后,我发现我们可以通过集合更改方法(默认提供)编辑我们的集合,但现在我无法找到一种简单的方法来使用它。以下是我在key_up
事件上执行的新代码。请指导一下如何使用自动完成的集合更改方法。
新代码:
private void key_up(object sender, KeyEventArgs e)
{
mycollection.CollectionChanged+= mycollection.Add("abcd");
}

答案 0 :(得分:1)
出于这一切的困惑。我找到了一个简单的方法。
只需每次都清除自动填充功能并向其添加新项目。
最简单,最快
// autocomplete.clear(); autocomplete.add( “名称”);