如何在填充字典的组合框中获取 SelectedValue 的值

Posted

技术标签:

【中文标题】如何在填充字典的组合框中获取 SelectedValue 的值【英文标题】:How to get value of SelectedValue in ComboBox filled with Dictionary 【发布时间】:2013-03-12 20:57:01 【问题描述】:

我们有这样的字典:

var dictionary = new Dictionary<int, int>   0, 100 ,  1, 202 ,  2, 309 , ;

等等很多值。像这样绑定到组合框的字典:

comboBox1.ItemsSource = dictionary;
comboBox1.DisplayMemberPath = "Value";

如果 comboBox.Text 仅适用于手动输入的值和此代码,我想知道如何获取此组合框的 selectedvalue:

string value = comboBox1.SelectedValue.ToString();

返回值如 [1, 202],而我需要清除 int TValue "202"。我找不到类似的问题,所以我在那里问,希望答案对其他人有用。

【问题讨论】:

使用它作为学习如何使用Dictionary&lt;int,int&gt; or Dictionaryt&lt;string, int&gt; ***.com/questions/6412739/… 创建BindingSource 的替代方法 【参考方案1】:

看来您必须将SelectedValue 转换为KeyValuePair&lt;int, int&gt;

string value = ((KeyValuePair<int, int>)comboBox1.SelectedValue).Value.ToString();

但是,您应该在此处设置一个刹车点并检查 SelectedValue 的真正类型。

我假设它是KeyValuePair&lt;int, int&gt;,因为您的源集合是Dictionary&lt;int, int&gt;,并且因为SelectedValue.ToString() 的输出字符串是[1, 202]

【讨论】:

太棒了!效果很好,非常感谢!!我会尽快接受你的回答。 如果指定了 SelectedValuePath,最好使用 selecteditem,因为 selectedvalue 的类型可能不同【参考方案2】:

如果指定 ValueMember,则可以避免强制转换操作。 在数据源之前设置路径很重要,否则它会使用键值对的选定值触发更改的事件。

comboBox1.DisplayMemberPath = "Value";
comboBox1.SelectedValuePath= "Key";
comboBox1.ItemsSource = dictionary;
string value = comboBox1.SelectedValue.ToString();

【讨论】:

以上是关于如何在填充字典的组合框中获取 SelectedValue 的值的主要内容,如果未能解决你的问题,请参考以下文章

Python,如何使用字典填充数据框中的空值

从组合框中选择项目时,如何从数据库中获取 ID 值?

如何在vfp中的选定组合框中填充列表框?

Python Selenium从两个组合框中获取数据

用 Pandas 数据框中的行填充嵌套字典

为啥动态值没有填充在自动完成组合框中?