2017-01-20 11 views
1

私が表示textNameコンボボックスのオートコンプリートを作成する必要がありますが、私はtextをクリックしたときには、「名前」との結合valueID」を取得します。私は既にコードを作成しましたが、それは動作しません。私はset display textvalueとコンボボックスとオートコンプリートdata-sourceバインディングに混乱しています。C#のコンボボックスオートコンプリートセット表示テキストと値

private void loadAutoCompleteValues() 
{ 
    autoCompleteCombo.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
    autoCompleteCombo.AutoCompleteSource = AutoCompleteSource.CustomSource; 

    DataTable products; 
    con.MysqlQuery("select * from products"); 
    products = con.QueryEx(); 
    Dictionary<string, string> comboSource = new Dictionary<string, string>(); 

    for (int i = 0; i < products.Rows.Count; i++) 
    { 
     DataRow dr = products.Rows[i]; 
     comboSource.Add(dr["id"].ToString(), dr["name"].ToString()); 
    } 

    autoCompleteCombo.DataSource = new BindingSource(comboSource, null); 
    autoCompleteCombo.DisplayMember = "Value"; 
    autoCompleteCombo.ValueMember = "Key"; 
} 

private void autoCompleteCombo_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string key = ((KeyValuePair<string, string>)autoCompleteCombo.SelectedItem).Key; 
    string value = ((KeyValuePair<string, string>)autoCompleteCombo.SelectedItem).Value; 

    MessageBox.Show(key + " " + value); 
} 
+0

あなたはどういう意味ですか?メッセージボックスが表示されていますか? –

+0

いいえ、コンボボックスは空です! – user3722956

+0

それは働いている!私は 'db con = new db();'を忘れていましたが、 'auto complete'は動作しませんでしたか? – user3722956

答えて

1

しかし私はあなたのコードを使用して、ここで間違っている可能性があり、私は単にあなたのコードに行autoCompleateCombo.AutoCompleteSource = AutoCompleteSource.ListItems;を追加し、期待どおりに働きました。

autoCompleateCombo.DataSource = new BindingSource(comboSource, null); 
    autoCompleateCombo.DisplayMember = "Value"; 
    autoCompleateCombo.ValueMember = "Key"; 
    autoCompleateCombo.AutoCompleteSource = AutoCompleteSource.ListItems; //<-- Added this line 
+0

うわべき。うまく動いている。 – user3722956

関連する問題