Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建一个对名字和姓氏都有效的自动完成文本框_C#_Winforms_Textbox - Fatal编程技术网

C# 创建一个对名字和姓氏都有效的自动完成文本框

C# 创建一个对名字和姓氏都有效的自动完成文本框,c#,winforms,textbox,C#,Winforms,Textbox,我在Winforms应用程序上创建了一个自动完成文本框 private void txtClientName_TextChanged(object sender, EventArgs e) { if (txtClientName.Text.Length == 1) { completeCollection.Clear(); CustomerRepository repo = new CustomerRepository(); var

我在Winforms应用程序上创建了一个自动完成文本框

private void txtClientName_TextChanged(object sender, EventArgs e)
{
    if (txtClientName.Text.Length == 1)
    {
        completeCollection.Clear();
        CustomerRepository repo = new CustomerRepository();
        var customers = repo.FindAllCustomers().Where(u => u.Name.StartsWith(txtClientName.Text) || u.LastName.StartsWith(txtClientName.Text));

        foreach (var customer in customers)
        {
            completeCollection.Add(customer.Name + " " + customer.LastName);
        }

        txtClientName.AutoCompleteMode = AutoCompleteMode.Suggest;
        txtClientName.AutoCompleteSource = AutoCompleteSource.CustomSource;
        txtClientName.AutoCompleteCustomSource = completeCollection;
    }
}
当我输入一个名字,即:塞尔吉奥-它的工作

但是,当我输入姓氏时,即古铁雷斯,它不会获取结果

问题在于我在FindAllCustomers()方法中对IQueryable使用的查询


我应该换什么?此外,您是否推荐一种更好的方法来“解雇”自动完成群体?目前,我只在文本长度为1时提取记录。这是因为如果有人键入“s”,则只会加载以s开头的姓名或姓氏

自动完成系统根据已键入的内容过滤您的customsource。因此,不会显示您的姓氏匹配项

我建议您将当前查询更改为仅搜索名称,而不搜索Lastname。在for each语句之后,执行另一个查询,这次只搜索lastname,然后再次执行for each循环,但将内部代码更改为:

completeCollection.Add(customer.Lastname + ", " + customer.Name);
这一次,文本框也应该显示以姓氏开头的客户。

我在两个或多个应用程序中使用了自动完成文本框。这对我来说很好