2017-04-23 2 views
0

私はlistBoxに国名の配列を持っています。私がtextBoxを入力すると、textBoxに表示されているもので始まる国が表示されます。配列の部分検索を使用して結果を出力する方法は?

だから私が入力したとします。それはテキストボックスに何があるかで始まる場合にのみ、A => rgentina、ENGL ND

:B =>B razil

はこれを気に入っていません。フルワードでも動作します。

arraylistには複数の名前が含まれていますが、以下のコードでは名前だけが抽出されています。 List2は私が検索に使用したいarraylistです。

private void textBox7_TextChanged(object sender, EventArgs e) 
    { 
     listBox1.ClearSelected(); 
     listBox1.DataSource = null; 
     foreach (Country name2 in Mytree.List) 
     { 
      List2.Add(name2.name); 
      Console.WriteLine(List2); 
     } 
    } 
+0

あなたのやりたいことは不明です。テキストボックスで入力したテキストで始まるすべての国名をリストボックスに追加しますか?ちなみに、あなたはすべての名前を入力せずに、特定の国を選択するためにあなたの最終使用を手助けしようとしていますか? TextBoxのオートコンプリート機能を使用しようとしましたか? – Steve

答えて

0

private void textBox7_TextChanged(object sender, EventArgs e) 
{ 
    listBox1.ClearSelected(); 
    listBox1.DataSource = null; 
    var matchingCountries = Mytree.List.Where(l=>l.name.StartsWith(textBox7.Text)); 
    foreach (Country name2 in matchingCountries) 
    { 
      listBox1.Items.Add(name2.name); 
    } 
} 
+0

これはほとんどの場合、複製が作成されます。だから、ブラジルという言葉は、私が綴っているように、ブラジルのインスタンスを6つ作成します。 –

0

かなりわからないが、あなたは

listBox1.DataSource = Mytree.List.Where(a=>a.name.StartsWith(textBox7.Text) 

それぞれを追加するには、foreachループを使用してのあなたの例のようなものをリストボックスのデータソースを設定することを見てみたいと思うでしょうアイテムは少し冗長です。

+0

これは、最初のcharで正常に動作します。私はそれが単語の各文字をチェックしたい場合はどうですか? –

+0

これは本当ではありません。これをTextChangedイベントに設定すると、コンボボックスにMytree.Listのすべての値がロードされ、アイテムの「名前」プロパティがStartsWithで、テキストボックスに値が入力されます。 –

+0

チリと中国があれば、スタートは私に彼らの両方を与えるでしょう。どうすれば検索をさらに絞り込むことができますか? StartsWithは最初の文字のみを表示します。 –

1

あなたの目的が完全な国名を入力しないようにする場合は、新しい種類のユーザーインターフェイスを改革する必要はありません。 TextBoxには、既にコードで再現しようとしていることを実行するためのすべての配管工事があります。必要なのはデータのソースであり、設定はプロパティのペアです

// Create the list to use as the custom source. 
var source = new AutoCompleteStringCollection(); 
source.AddRange(new string[] 
{ 
    "Argentina", 
    "England", 
    "Brazil", 
    "Italy", 
    "..." 
}); 

textBox1.AutoCompleteCustomSource = source; 
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
関連する問題