显示文本框建议中的所有项目

时间:2016-09-23 13:32:49

标签: c# textbox lucene controls

我写了一个函数,在收到文本后,返回建议/类似的单词到结果。返回字符串列表。我将此功能与文本框TEXT更改连接。

例如,当我将汽车放入文本框时,我的函数会返回一个包含汽车火星(火星)的字符串列表是simmilar一词,sb可能会写错字。)

我想制作类似autocompletemoe.suggest,但文本框应该显示此列表中的每个单词,而不仅仅是相同的字母。

例如:

它应该如何运作? 当我把车放入文本框 TEXTBOX应该为我建议:汽车火星

它是如何工作的? 当我把车放入文本框 TEXTBOX仅为我建议汽车

我有

my_textbox.AutoCompleteCustomSource = my_AutoCompleteStringCollection;
my_textbox.AutoCompleteSource = AutoCompleteSource.CustomSource;
my_textbox.AutoCompleteMode = AutoCompleteMode.Suggest
嗯,也许我会以其他方式描述它。 让我们假设这个方法

List<String> GiveSimmilar(string ABC_word)

存在并且它将所有类似的单词返回到&#39; ABC_word&#39;。 我有一个名为&#34; query_text&#34;的文本框控件。 来自MainForm的代码段

private AutoCompleteStringCollection suggestions;
private void Main_Form_Load(object sender, EventArgs e){
// ...
suggestions = new AutoCompleteStringCollection();
query_text.AutoCompleteCustomSource = suggestions;
query_text.AutoCompleteSource = AutoCompleteSource.CustomSource;
query_text.AutoCompleteMode = AutoCompleteMode.Suggest;
// ...
}
private void query_text_TextChanged(object sender, EventArgs e){
suggestions.Clear();
if(string.IsNullOrWhiteSpace(query_text)) return;
List<string> suggest = GiveSimmilar(query_text.Text);
foreach (string sug in suggest){
suggestions.Add(sug);
Console.WriteLine(sug);
}

}

[1] https://postimg.cc/image/4zt4g087d/

1 个答案:

答案 0 :(得分:0)

你的问题通过定期表达来解决, (对不起我的英语,我正在努力:))

使用System.Text.RegularExpressions;

namespace MyNameSpace
{

class GetAuto
{
    public GetAuto()
    {
        string text = "cars";
        foreach (var item in GetAutoComplete(text))
        {
            Console.WriteLine(item);
        } 
    }

    private List<string> GetAutoComplete(string text)
    {
        var lookForSimilarities = Regex.Match(text,"ars");

        var autoComplete = new List<string>();

        if (lookForSimilarities.Success)
        {
            autoComplete.Add("cars");
            autoComplete.Add("mars");
            autoComplete.Add("wars");
            autoComplete.Add("tarso");
        }


        return autoComplete;
    }
 }
}

我在这做什么?让我解释一下

用这段代码我说 &#34;嘿,搜索所有类似的&#34; ars&#34;&#34;

    var lookForSimilarities = Regex.Match(text,"ars");

&#34;如果您发现了类似内容,请将所有内容添加到列表&#34;

        if (lookForSimilarities.Success)
        {
            autoComplete.Add("cars");
            autoComplete.Add("mars");
            autoComplete.Add("wars");
            autoComplete.Add("tarso");
        }

&#34;返回结果&#34;

          return autoComplete;

&#34;进行迭代,并在控制台中显示结果(但在您的情况下不是控制台)&#34;

       foreach (var item in GetAutoComplete(text))
       {
              Console.WriteLine(item);
       }