gpt4 book ai didi

C# - 使用来自两个字段的数据自动完成文本框

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:56 25 4
gpt4 key购买 nike

我正在尝试使用来自 PostgreSQL 数据库的数据在 Windows 窗体上实现自动完成文本框。让我试着解释一下我的问题:

在数据库中,我有一个分别具有 firstName 和 lastName 字段的表。

在我的 Windows 窗体应用程序中,我想提供使用 firstName 或 lastName 进行搜索的机会,并从那里提供自动完成选项。

例如,如果我在表中有一个名字为“Goat”且姓氏为“McGoats”的条目,我希望能够在我的 Windows 中获得“Goat McGoats”(名字 {空格} 姓氏)作为建议无论我输入“G”还是“M”,都要形成文本框 - 名字或姓氏的开头。

现在,我拥有的是针对一列的有效解决方案(即)我可以单独使用 firstName(或单独的 lastName)填充 AutoCompleteSource,然后搜索将对其进行处理。在上面的示例中,这意味着键入 G 会给出“Goat”作为建议 - 请注意,它不建议 firstName + lastName。

当前代码如下所示:

nameTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
nameTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection collection = new AutoCompleteStringCollection();

// Retrieve all rows
cmd.CommandText = "SELECT * FROM users";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
collection.Add(reader["firstName"].ToString());
}
}

nameTextBox.AutoCompleteCustomSource = collection;

C# 中的自动完成是否支持此功能?或者在文本框下方添加一个隐藏的列表框并使用搜索字符串手动填充值是唯一的方法吗?

最佳答案

不,不支持,因为实现取决于 IAutoComplete2延伸 IAutoComplete .文本框准备了集合中的所有这些值,以便 IEnumString 使用它们就是这样。然后所有处理都推迟到 native 实现。

也没有 AUTOCOMPLETEOPTIONS 似乎适合您的用例。

如果您不想实现您自己建议的内容,您可以同时添加名字和姓氏的组合。这将使您的字符串数量加倍,但在小集合中这可能不是问题。在您的循环中,您将代码更改为:

// firstname, lastname
collection.Add(String.Format("{0}, {1}",reader["firstName"], reader["lastName"]));
// lastname, firstname
collection.Add(String.Format("{1}, {0}",reader["firstName"], reader["lastName"]));

但如果您只希望在文本框中输入名字或姓氏,则可能需要后期处理。

关于C# - 使用来自两个字段的数据自动完成文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36361696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com