ComboBox SelectedValue返回一个对象而不是值

时间:2014-11-11 16:55:04

标签: c# winforms visual-studio-2008 combobox windows-ce

目标:当我的表单加载时,我正在进行数据库调用,该数据库调用返回给我一个DataTable,我想将其指定为KeyValuePair(字符串,字符串)作为组合框的数据源。显示成员是键(RailCarID),值成员是值(RailcarTransaction_Guid)(我将其存储为字符串)。

我遇到的问题是,当我做combobox.SelectedValue时...它返回给我一个对象而不是一个字符串。谁能提出我在这里做错了什么?

我最初使用的是字典(并且会出错),并且通过搜索解决我的问题最终使用了BindingList。现在我的应用程序上的组合框在显示器中显示对象数组。下面是一些代码片段:

    private void GetAllTransactions()
    {
        BindingList<KeyValuePair<string, string>> Transactions = new BindingList<KeyValuePair<string, string>>();
        string sql = "SELECT * FROM RailcarTransaction WHERE IsComplete = 'True' AND IsUploaded = 'False'";
        DataTable transactions = session1.GetRecords(sql);
        for (int i = 0; i < transactions.Rows.Count; i++)
        {
            Transactions.Add(new KeyValuePair<string, string>(transactions.Rows[i]["RailCarID"].ToString(), transactions.Rows[i]["RailcarTransaction_Guid"].ToString()));
        }       
        cboxRailCars.DisplayMember = "Key";
        cboxRailCars.ValueMember = "Value";
        cboxRailCars.DataSource = Transactions;
    }

1 个答案:

答案 0 :(得分:1)

由于ComboBox.ValueMember可以设置为任何数据类型的属性(例如,它可以是intDateTime,但不一定是{{ 1}}),SelectedValue属性是一个对象。

你必须知道你实际处理的是什么类型并将其转换回来:

string