1

我有一个文本框,我可以在其中使用自动完成功能。例如,如果 use 键入起始字符,则会显示一个带有选项的下拉列表。这就是我目前正在使用以下代码所做的事情:

inputTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
inputTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
inputTextBox.AutoCompleteCustomSource = inputStringCollection; //inputStringCollection contains the list of possible strings

我需要的:

我希望能够使用此文本框搜索多种类型的数据(例如全名、用户名、电子邮件、电话号码等)。例如,客户具有他的全名、系统中的用户名、电话号码列表、电子邮件列表等属性。现在,我为每个属性设置了单独的文本框,但我想将它们全部合并合而为一。所以我的想法是我应该能够在同一个文本框中搜索所有类型的属性。

问题:

我想到的一种可能的实现是为每种类型的属性创建单独的字符串集合,然后将它们全部合并为一个,然后将该合并的字符串集合附加到此文本框。这种方法的问题是我无法处理重复项。假设有一个人的名字和用户名都是“约翰”。在这种情况下,我不知道从下拉列表中选择了哪种类型的属性。

问题:

是否可以将除字符串集合之外的其他内容附加到文本框的自动完成机制?也许我可以有一个存储自定义数据结构对象的 Arraylist,每个对象都定义了几个值,例如 ID、属性类型等。或者类似的东西?这样,当用户从下拉列表中选择一个条目时,我可以知道用户选择的属性类型。

4

2 回答 2

0

软件中通常发生的事情,这是在 Mac 版 iTunes Store 的第一个版本中引入的,只有一个搜索框可以回答任何类型的搜索。

我们开发人员最终要做的是在case选择数据库之前使用 SQL 或我们的动态语言中的变量。

行内的东西

  • 如果@在搜索中找到一个字符,让我们通过电子邮件地址查找
  • 如果找到电话号码(regex例如匹配),让我们按电话号码搜索
  • 如果integer找到了,让我们按订单 ID 查找
  • ...
  • 否则,让我们按客户名称、地址或城市查找

这就是我们通常将一个搜索框设置为“搜索所有内容”的方式,女巫并不是真正的所有内容,但搜索格式就是我们知道在哪里搜索的方式。

有一个“高级搜索”总是一个很好的做法,我们拥有所有可以真正使动态查询变得强大的字段,因为只有在特殊情况下用户才会使用它。

于 2012-12-25T17:05:41.713 回答
0

您可以创建自己的“字符串集合”对象,该对象在外部看起来像一个普通列表,但在内部将所有实际列表保存在内部,然后在调用接口方法时搜索所有列表。你需要研究自动完成的东西是如何得到它的建议的。

于 2012-12-25T17:08:38.083 回答