Windows ComboBox所选项目(从List<>填充)

时间:2015-05-09 15:11:41

标签: c# windows combobox generic-list selectedvalue

我正在设置这样的组合框项目:

List<Object> items = new List<Object>();
items.Add(new { Text = "MyVal", Value = 1 });
cbo.DataSource = items;

然后在VS返回:

enter image description here

但我现在不能简单地说cbo.SelectedItem.Text或cbo.SelectedItem.Value。 如果我试试这个,我会收到错误

"object does not contain a definition for value and no extension method value 
accepting a first argument of type object could be found"

我如何获得Value Property

基于很好的回复,我现在添加了这个,以表明我根本无法获得Text或Value的属性。 enter image description here

我已经尝试过这段代码将“字符串”传递给

 public class ComboboxItem
    {
        public string Text { get; set; }
        public short Value { get; set; }

        public ComboboxItem(string t, short v)
        {
            Text = t;
            Value = v;
        }

    }

4 个答案:

答案 0 :(得分:2)

组合框绑定到包含匿名类型的列表。你应该使用dynamic keyword

dynamic item = cbo.SelectedItem;

String text = item.Text;
Int32 value = item.Value;

答案 1 :(得分:1)

使用Text和Value属性(ComboboxItem)创建类,然后使用该类创建item列表。现在你可以这样做

ComboboxItem obj = cbo.SelectedItem as ComboboxItem;
//now you can get the obj.Value

答案 2 :(得分:0)

你应该添加它。cbo.SelectedItem as object;  然后,例如:

public class student
{
    public string name;
    public int age;
}
var stu = cbo.SelectedItem as student;
string name = stu.name;
int age = stu.age;

好的,这是我的第一个答案。

答案 3 :(得分:0)

我注意到你要删除代码的某些部分,因为我会认为你没有使用对象&#39; object&#39;但是其他的东西,否则你的代码就不会编译。

ComboBox不保存其值的数据类型,它们都将它们视为简单对象。所以SelectedItem将是类型对象,然后应该将其转换为正确的数据类型,以便访问text / value属性。

var myItem = cbo.SelectedItem as MyObject
if(myItem != null){
    Console.WriteLine("Value is {0}", myItem.Value);
}