我有一个带自动完成模式的文本框。当我输入前几个字符时,建议列表项超过15。 我希望建议项目最多显示10个项目。
我找不到属性。
AutoCompleteStringCollection ac = new AutoCompleteStringCollection();
ac.AddRange(this.Source());
if (textBox1 != null)
{
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteCustomSource = ac;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
答案 0 :(得分:0)
您不能在AutoCompleteStringCollection类上使用LINQ。我建议你自己在TextBox的TextChanged事件中处理过滤。我在下面写了一些测试代码。输入一些文本后,我们将过滤并从您的Source()数据集中获取前10个匹配项。然后我们可以为TextBox设置一个新的AutoCompleteCustomSource。我测试了它,这有效:
private List<string> Source()
{
var testItems = new List<string>();
for (int i = 1; i < 1000; i ++)
{
testItems.Add(i.ToString());
}
return testItems;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
var topTenMatches = this.Source().Where(s => s.Contains(textBox1.Text)).Take(10);
var autoCompleteSource = new AutoCompleteStringCollection();
autoCompleteSource.AddRange(topTenMatches.ToArray());
textBox1.AutoCompleteCustomSource = autoCompleteSource;
}