如何通过ValueMember选择列表框项目

时间:2011-02-07 13:43:17

标签: c# .net winforms listbox

如果我有两个具有相同DisplayMember但具有不同ValueMember的项目,并且我想以编程方式选择这两个项目中的一个,我该怎么做?

项目:

123 -> Peter Pan
234 -> John Doe
345 -> Peter Pan

我不能通过

选择最后一个Peter Pan
Listbox1.FindStringExact("Peter Pan");

因为这只会返回第一次出现 以下也不起作用,因为它只设置所选项目,但不会在列表中显示:

Listbox1.SelectedItem = dataTable.Rows.Find(345);

谁可以帮我这个?

更新

我自己找到了更多信息,列表已经排序,因此当我更新DataTable(用于填充列表)时,列表就被使用了,它似乎选择了代替已编辑项目的项目。

Listbox1.FindStringExact仅在DisplayMember不同时才起作用

2 个答案:

答案 0 :(得分:3)

您可以使用列表控件的SelectedValue属性:

Listbox1.SelectedValue = 345;

答案 1 :(得分:1)

您必须通过ListBox控件的DataSource属性分配数据,而不是通过Items.Add。 之后,您可以使用ValueMember选择项目:

listBox1.DataSource = GetPeople();
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";

// Now you can use
listbox1.SelectedValue = 345;

UPDATE:Items是ListBox类的成员,但SelectedValue是ListControl属性,只能使用DataSource。