我正在设置这样的组合框项目:
List<Object> items = new List<Object>();
items.Add(new { Text = "MyVal", Value = 1 });
cbo.DataSource = items;
然后在VS返回:
但我现在不能简单地说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的属性。
我已经尝试过这段代码将“字符串”传递给
public class ComboboxItem
{
public string Text { get; set; }
public short Value { get; set; }
public ComboboxItem(string t, short v)
{
Text = t;
Value = v;
}
}
答案 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);
}