Windows 组合框选定项(从列表<>填充)
Windows ComboBox Selected Item (populated from List<>)
我正在设置这样的组合框项目:
List<Object> items = new List<Object>();
items.Add(new { Text = "MyVal", Value = 1 });
cbo.DataSource = items;
然后在VS中returns:
但我现在不能简单地说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"
请问如何获取值属性
基于很好的回复,我现在添加了这个,以表明我根本无法获取 Text 或 Value 的属性。
我试过这段代码将 "string" 传递给
public class ComboboxItem
{
public string Text { get; set; }
public short Value { get; set; }
public ComboboxItem(string t, short v)
{
Text = t;
Value = v;
}
}
使用文本和值属性 (ComboboxItem
) 创建 class,然后使用 class 创建 item
列表。现在你可以做如下
ComboboxItem obj = cbo.SelectedItem as ComboboxItem;
//now you can get the obj.Value
你应该加上这个。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;
好的,这是我的第一个答案。
我注意到您删除了代码的某些部分,因此我假设您没有使用对象 'object',而是使用其他对象,否则您的代码将无法编译。
ComboBox 不保存其值的数据类型,它都将它们视为简单对象。因此 SelectedItem 将是对象类型,然后应将其转换为正确的数据类型以访问文本/值 属性.
var myItem = cbo.SelectedItem as MyObject
if(myItem != null){
Console.WriteLine("Value is {0}", myItem.Value);
}
组合框绑定到包含匿名类型的列表。你应该使用 dynamic keyword.
dynamic item = cbo.SelectedItem;
String text = item.Text;
Int32 value = item.Value;
我正在设置这样的组合框项目:
List<Object> items = new List<Object>();
items.Add(new { Text = "MyVal", Value = 1 });
cbo.DataSource = items;
然后在VS中returns:
但我现在不能简单地说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"
请问如何获取值属性
基于很好的回复,我现在添加了这个,以表明我根本无法获取 Text 或 Value 的属性。
我试过这段代码将 "string" 传递给
public class ComboboxItem
{
public string Text { get; set; }
public short Value { get; set; }
public ComboboxItem(string t, short v)
{
Text = t;
Value = v;
}
}
使用文本和值属性 (ComboboxItem
) 创建 class,然后使用 class 创建 item
列表。现在你可以做如下
ComboboxItem obj = cbo.SelectedItem as ComboboxItem;
//now you can get the obj.Value
你应该加上这个。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;
好的,这是我的第一个答案。
我注意到您删除了代码的某些部分,因此我假设您没有使用对象 'object',而是使用其他对象,否则您的代码将无法编译。
ComboBox 不保存其值的数据类型,它都将它们视为简单对象。因此 SelectedItem 将是对象类型,然后应将其转换为正确的数据类型以访问文本/值 属性.
var myItem = cbo.SelectedItem as MyObject
if(myItem != null){
Console.WriteLine("Value is {0}", myItem.Value);
}
组合框绑定到包含匿名类型的列表。你应该使用 dynamic keyword.
dynamic item = cbo.SelectedItem;
String text = item.Text;
Int32 value = item.Value;