winform - 设置列表框的选定值

时间:2013-09-15 09:52:33

标签: c# winforms listbox

我有一个名为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成员获取值但是没有设置值? 有任何想法吗?

3 个答案:

答案 0 :(得分:0)

尝试

listBox1.SetSelected(MyId, true);

查看this

答案 1 :(得分:0)

你只是在正确的方向。 SelectedValue应该做你需要的。

listBox1.SelectedValue = 2;//this works for me

注意:您必须在此处设置int,因为数据源为int。设置“2”将无法正常工作

答案 2 :(得分:0)

您应该将代码更改为此类

 listBox1.DataSource = li.OrderBy(l=>l.Name).ToArray(); 

因为数据源不理解IOrderedEnumerable

希望这个帮助