如何限制自动填充文本框c#中的下拉项?

时间:2016-02-13 15:50:00

标签: c# winforms autocomplete textbox

我有一个带自动完成模式的文本框。当我输入前几个字符时,建议列表项超过15。 我希望建议项目最多显示10个项目。

我找不到属性。

AutoCompleteStringCollection ac = new AutoCompleteStringCollection();
ac.AddRange(this.Source());

if (textBox1 != null)
{
    textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
    textBox1.AutoCompleteCustomSource = ac;
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}

1 个答案:

答案 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;
}