【问题标题】:ComboBox KeyValuePair not getting values properlyComboBox KeyValuePair 未正确获取值
【发布时间】:2014-03-21 23:05:32
【问题描述】:
  /**Dictionary looks like this
    *[PERCENTAGELOSS, 0]
    *[THRESHOLD, 1]
    *etc.
    */
  Dictionary<string, string> allEnums = XMLHandling.getEnums(enumCognityName);

  foreach (KeyValuePair<string,string> item in allEnums)
        {
             enumCmb.Items.Add(item);
        }
             enumCmb.DisplayMember = "Key";
             enumCmb.ValueMember = "Value";
             enumCmb.SelectedIndex = 0;
        }

KeyValuePairs 添加到ComboBox 后,它正确显示了项目的名称,但我无法正确获取它们的值。这是尝试获取值的代码:

case "enum":
           ComboBox enumBox = c as ComboBox;
           var test0 = enumBox.SelectedItem; // [PERCENTAGELOSS, 0]
           var test1 = enumBox.SelectedText; // ""
           var test2 = enumBox.SelectedValue; // null
           break;

我认为我正确地将 ValueMember 添加为来自 KeyValuePair 的“值”。我做错了什么?

【问题讨论】:

  • DisplayMember 和 ValueMember 仅在您设置 ComboBox 的 DataSource 时起作用。 SelectedItem 应该可以工作,您只需将其转换为 KeyValuePair&lt;string, string&gt;

标签: c# combobox key-value keyvaluepair


【解决方案1】:

你可以像这样绑定,而不是在 enumCmb 中添加项目

enumCmb.DisplayMember = "Key";
enumCmb.ValueMember = "Value";
enumCmb.DataSource = new BindingSource { DataSource = allEnums };

我不确定,但您可能需要将数据转换为列表。

【讨论】:

  • 工作得非常好,甚至不必将数据转换为列表!谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2012-06-18
相关资源
最近更新 更多