数据源Dicitionary Combobox获得值选择组合框c#

时间:2017-11-17 16:25:48

标签: c# dictionary combobox

我的问题我无法读取组合框的选定字典对的值

我使用了组合框的绑定

comboBoxNutzungsart.DataSource = new BindingSource(Zordnung.dieListe, null);
comboBoxNutzungsart.DisplayMember = "Key";
comboBoxNutzungsart.ValueMember = "Value";

这是我的词典“dieListe”

public static class Zordnung
{
    public static Dictionary<String, Double> dieListe = new Dictionary<String, double>()
    {
        {"Bitte auswählen", 0},
        {"Wohnung", 50},
        {"Büro", 
    }
}

现在我想要所选键的价值,但我没有尝试成功

我试过了:

private void comboBoxNutzungsart_SelectedIndexChanged(object sender, EventArgs e)
{
    double BerechneterWert;
    string text = comboBoxNutzungsart.Text;
    double zahl = Zordnung.dieListe[text] 
}

但是有了这个,字典中的整个元素都会出现text =“[Bitteususwählen,0]”

以及类似的东西

Dictionary<string, double> selectes = 
    (Dictionary<string, double>)comboBoxNutzungsart.SelectedItem;

我得到一个包含所选项目的词典我如何获得该值?

1 个答案:

答案 0 :(得分:1)

您遇到的问题似乎是comboBox项目都是KeyValuePair<string, double>类型的对象,但您只是在访问该类型的ToString()实现时你得到.Text财产。

您可以做的是将项目投射到实际类型,然后您可以访问Value(或Key):

private void comboBoxNutzungsart_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedItem = (KeyValuePair<string, double>) comboBoxNutzungsart.SelectedItem;
    string text = selectedItem.Key;
    double zahl = selectedItem.Value;
}

修改

另一个想法是,如果您只需要Value,那么您可以通过将Zordnung.dieListe作为列表并使用与{相同的索引访问项目来从Values访问它{1}}:

comboBoxNutzungsart.SelectedIndex