【问题标题】:c# combobox autocomplete set display text and valuec#combobox自动完成设置显示文本和值
【发布时间】:2025-12-12 19:40:01
【问题描述】:

我需要创建一个显示textName 的组合框自动完成功能,但是当我点击text 时,它会得到valueID”与“名称”的绑定。我已经创建了一个代码,但它不起作用,我很困惑 set display textvalue 进入组合框和自动完成 data-source 绑定。

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);
} 

【问题讨论】:

  • 不工作是什么意思?那个消息框在显示吗?
  • 不,组合框是空的!
  • 它正在工作!我忘了db con = new db();auto complete 不工作??

标签: c# combobox autocomplete


【解决方案1】:

我在这里可能不正确,但是使用您的代码,我只是将行 autoCompleateCombo.AutoCompleteSource = AutoCompleteSource.ListItems; 添加到您的代码中,它按预期工作。

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

【讨论】: