【发布时间】:2023-03-19 22:12:01
【问题描述】:
我正在尝试向文本框添加自动完成功能,结果来自数据库。它们的格式为
[001] 最后,第一个中间
目前您必须输入 [001]... 才能显示条目。 所以问题是,即使我先输入名字,我也希望它完成。所以如果一个条目是
[001] 史密斯,约翰 D
如果我开始输入 John,那么此条目应该会显示在自动完成的结果中。
目前的代码看起来像
AutoCompleteStringCollection acsc = new AutoCompleteStringCollection();
txtBox1.AutoCompleteCustomSource = acsc;
txtBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
....
if (results.Rows.Count > 0)
for (int i = 0; i < results.Rows.Count && i < 10; i++)
{
row = results.Rows[i];
acsc.Add(row["Details"].ToString());
}
}
results 是一个包含查询结果的数据集
查询是使用 like 语句的简单搜索查询。如果我们不使用自动完成功能并且只是将结果扔到一个数组中,则会返回正确的结果。
有什么建议吗?
编辑:
这是返回结果的查询
SELECT Name from view_customers where Details LIKE '{0}'
其中 {0} 是搜索字符串的占位符。
【问题讨论】:
-
乍一看还可以。查看更多代码会很有用,包括使用的查询和“id”的初始化(你有两个自动完成框吗?)。
-
好的,添加了对查询的编辑。我只使用 1 个自动完成框。该 ID 实际上从未在结果中使用,它被添加以供以后使用,因此我在此编辑中将其删除。很抱歉造成混乱。
-
有一个不错的免费 c# autocomplete control 可用 (with source code) 很容易修改。
标签: c# winforms autocomplete