Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用列表框确定选择了哪个对象_C#_Visual Studio 2008_Select_Listbox - Fatal编程技术网

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

C# 使用列表框确定选择了哪个对象,c#,visual-studio-2008,select,listbox,C#,Visual Studio 2008,Select,Listbox,我有一个对象数组,例如人和关于他们的信息。我如何确定在列表框中选择了谁,其中只显示了他们的名字和姓氏?是否可能以某种方式将列表框中的项目与数组中的项目链接起来?显然,我不能依赖SelectedIndex,因为当列表框中的名称被过滤时,它就不再起作用了 在我的应用程序中,我有一个列表框,其中有人的姓名,当我单击列表框中的一个人时,我希望看到他们的详细信息(地址/contacs/misc)。问题是当两个人的名字相同时。你可以这样用。。。如果需要,您可以创建一个新属性来连接名字和姓氏,并将其用作Dis

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

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

你可以这样用。。。如果需要,您可以创建一个新属性来连接名字和姓氏,并将其用作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;

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

您是否可以将对象本身放入ListBox?是和否,如果您直接向ListBox添加对象,ListBox将调用ToString()方法,用于给定对象。既然我已经重写了这个函数,它将只显示第一个和最后一个名字,这似乎是可行的。。。我会在早上退房。是的,谢谢你,这很有效。。。你知道我怎么过滤那些人吗?比如只显示名字以“Pe”开头的人。我绕过了搜索功能:)