如何使用字典作为数据源绑定Combobox?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)

我使用的是.NET 2.0,我想将组合框的数据资源绑定到排序字典。

因此,我得到的错误是“DataMember property 'Key' cannot be found on the Datasource

        SortedDictionary<string, int> userCache = UserCache.getSortedUserValueCache();
        userListComboBox.DataSource = new BindingSource(userCache, "Key"); //This line is causing the error
        userListComboBox.DisplayMember = "Key";
        userListComboBox.ValueMember = "Value";
提问于
用户回答回答于
SortedDictionary<string, int> userCache = new SortedDictionary<string, int>
{
  {"a", 1},
  {"b", 2},
  {"c", 3}
};
comboBox1.DataSource = new BindingSource(userCache, null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value";

但是,为什么将ValueMember设置为“Value”,不应该将其绑定到“Key”(并将DisplayMember也设置为“Value”)?

用户回答回答于

我尝试获得选定值时遇到问题。我的组合框是一个工具栏组合框。我使用了“combobox”属性

有一个

 Dictionary<Control, string> controls = new Dictionary<Control, string>();

绑定代码

 controls.Add(pictureBox1, "Image");
 controls.Add(dgvText, "Text");
 cbFocusedControl.ComboBox.DataSource = new BindingSource(controls, null);
 cbFocusedControl.ComboBox.ValueMember = "Key";
 cbFocusedControl.ComboBox.DisplayMember = "Value";

问题是,当我试图获得选定的值时,我不知道如何检索。经过几次尝试,我得到了这个:

 var control = ((KeyValuePair<Control, string>) cbFocusedControl.ComboBox.SelectedItem).Key

扫码关注云+社区

领取腾讯云代金券