我有一个名为listbox1的列表框将限制为这样列出:
ValueVM word1 = new ValueVM { Id = 1, Name = "AAA" };
ValueVM word2 = new ValueVM { Id = 2, Name = "XBB" };
ValueVM word3 = new ValueVM { Id = 3, Name = "ACC" };
ValueVM word4 = new ValueVM { Id = 4, Name = "ACB" };
ValueVM word5 = new ValueVM { Id = 5, Name = "OTD" };
ValueVM word6 = new ValueVM { Id = 6, Name = "FDD" };
var li = new List<ValueVM>() { word1, word2, word3, word4, word5, word6 };
listBox1.DataSource = li.OrderBy(l=>l.Name).ToList();
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
我希望在此列表框中选择一个项目,假设我想要Id = 2;
int myID = 2;
//Idont know what the selected index will be but I need the selected value to be set
// I tried to set listBox1.SelectedValue=myId.ToString();
//but still returning null
listBox1.SelectedValue = myID;
MSDN中提到的:
获取或设置ValueMember属性指定的成员属性的值。 (继承自ListControl。)
我的问题是,seleted值从value成员获取值但是没有设置值? 有任何想法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
你只是在正确的方向。 SelectedValue
应该做你需要的。
listBox1.SelectedValue = 2;//this works for me
注意:您必须在此处设置int
,因为数据源为int
。设置“2”将无法正常工作
答案 2 :(得分:0)
您应该将代码更改为此类
listBox1.DataSource = li.OrderBy(l=>l.Name).ToArray();
因为数据源不理解IOrderedEnumerable
希望这个帮助