使用列表框确定选择了哪个对象

时间:2010-01-28 23:48:56

标签: c# visual-studio-2008 select listbox

我有一系列对象,例如人和关于它们的信息。我怎样才能确定在列表框中选择了谁,只显示了他们的名字和姓氏?是否有可能以某种方式将列表框中的项目与数组中的项目链接?显然我不能依赖SelectedIndex,因为当列表框中的名称被过滤时,它就不再起作用了。

在我的应用程序中,我有一个列表框,其中是人员名称,当我点击列表框中的一个人时,我想看到他们的详细信息(地址/ contacs / misc)。问题是当两个人有相同的名字时。

2 个答案:

答案 0 :(得分:3)

您可以像这样使用ListBox.SelectedItem ...如果您需要,可以创建一个新属性来连接FirstName和Surname并将其用作DisplayMember

public class Person
{
    public string FirstName { get; set; }
    public string Surname { get; set; }
}

var people = new[]
{
    new Person{FirstName = "Peter", Surname = "Pan"}, 
    new Person{FirstName = "Simon", Surname = "Cowell"}
};

var listbox = new ListBox
{
  DisplayMember = "FirstName",
  ValueMember = "FirstName",

  DataSource = people
};

var person = listbox.SelectedItem as Person;

答案 1 :(得分:0)

我建议在对象列表中添加一个唯一键。然后,您将能够使用唯一键作为列表项的值,您可以在选择项目时获得该值,并且可以使用该键来标识对象列表中的项目。