可以将数据结构对象附加到文本框以进行自动完成

时间:2012-12-25 16:55:58

标签: c# textbox

我有一个文本框,我可以使用自动完成的内容。例如,如果使用键入起始字符,则会显示带有选项的下拉列表。这就是我目前使用以下代码进行的操作:

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

我需要什么:

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

问题:

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

问题:

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

2 个答案:

答案 0 :(得分:0)

软件中通常会发生这种情况,这是第一版iTunes Store for Mac中引入的,只有一个搜索框能够应答任何类型的搜索。

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

行内的某些内容

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

这就是我们通常只在一个搜索框中搜索“搜索所有内容”的方式,但这并不是一切,但搜索格式就是我们知道搜索的位置。

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

答案 1 :(得分:0)

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