2016-09-23 19 views
0

テキストを受け取った後、その結果に候補/類似の単語を返す関数を作成しました。文字列のリストを返します。この関数をテキストボックスTEXTと変更して接続しました。例えばテキストボックスの提案にすべてのアイテムを表示

が、私は、テキストボックスにを入れたときに、私の機能は、と文字列のリストを返します、火星(火星がsimmilar言葉で、SBは、タイプミスをした可能性が)。

私はsthを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) 

が存在し、そのメソッドを想定してみましょう、それが「ABC_word」に、すべての類似した単語を返します。 私は "query_text"という名前のテキストボックスコントロールを持っています。 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/

+0

このテキストのどこで検索を開始していますか?そのような検索が最初の文字で起きていると思われ、したがってその文字の後ろのCを探しているように見えます。 –

+0

TextBoxコントロールの組み込みメソッドをオートコンプリートすることができます。そしてそれは同じ前の手紙を持っているリストからの単語だけを示すように機能します。私はリストからすべての単語を表示したいと私はそれを行うことができますかわからない:D –

答えて

0

あなたの問題は、System.Textのを使用して定期的expresion、 (私の英語、イムはそれに取り組んで申し訳ありません:))

で解決されます.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; 
    } 
} 
} 

ここには何がありますか?私は、コードイムのこの作品は、ARS「『

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

」』ちょっと、すべてのsimiliaritiesを検索「 と言ってそれを

を説明しましょうそして、あなたはsimiliaritiesを見つけた場合は、」リストの中のすべてを追加

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

  return autoComplete; 

"の結果を返す"「作りますコンソールで結果を表示してください(ただし、あなたの場合はコンソールではありません)。 "

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

あなたは私を誤解した。私はすでにTextBoxに入力されているすべての類似した単語を返す関数を持っています。私はそれらを提案テキストボックスとして表示する際に問題があります。私は既に同様の単語でいっぱいの準備リストを持っていますが、TextBoxは同じ文字を前もって表示しています(別の1文字のものを考慮しません)。私はこれをTextBoxという提案のリストにどのように関連付けるのか分かりません。ここに画像: –

+0

私はあなたに、画像リンクを与えなかった前のコメントで:[画像](https://postimg.org/image/4zt4g087d/) –

+0

あなたは定期的な表現を使用していますか?あなたがそれを使用していないなら、パターンを表現する必要があるので、決してうまくいかないからです。 ex: 「F」または「A」を含むすべての単語が必要です。 その作業には通常の表現が使用されます。 コードスニペットが必要な場合は教えてください。 – TwostedFrost

関連する問題