Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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#_Object_Collections_Listbox - Fatal编程技术网

C#:列表框:如何在每个项目的文本之外添加数据

C#:列表框:如何在每个项目的文本之外添加数据,c#,object,collections,listbox,C#,Object,Collections,Listbox,将以下文本视为两个列表(用“:”分隔),因为您可以看到第二行始终是唯一的,但第一行中的项目可能是重复的 Book:m234 Clover:h67 Pencil:a12 Book:x67 我想用第一列中的项目(Book、Clover等)填充列表框,但问题是,当我要检索列表框中的选定项目时,我无法确定第二列中的相应值。(例如,在“书”的情况下) 注意:我不想寻找任何解决此问题的方法,因为有很多方法。我想知道的是: 是否可以通过对象携带两个值(每列的每个值/属性)的方式将和对象传递到ListBox.

将以下文本视为两个列表(用“:”分隔),因为您可以看到第二行始终是唯一的,但第一行中的项目可能是重复的

Book:m234
Clover:h67
Pencil:a12
Book:x67
我想用第一列中的项目(Book、Clover等)填充列表框,但问题是,当我要检索列表框中的选定项目时,我无法确定第二列中的相应值。(例如,在“书”的情况下)

注意:我不想寻找任何解决此问题的方法,因为有很多方法。我想知道的是:

是否可以通过对象携带两个值(每列的每个值/属性)的方式将和对象传递到
ListBox.Items.Add()
,并且在获取所选项目时,我们将拥有一个具有这两个值的对象(可能作为对象的属性)


这样的事情在C#中可能发生吗?(.NET 4.5)

您可以将数据与名称配对的对象传递到
列表框
,并使用
DisplayMember
ValueMember
控制显示的内容和返回给您的内容:

class ListBoxItem {
    public string DisplayName {get;set;}
    public string Identifier {get;set;}
}
...
ListBox.Items.Add(new ListBoxItem {
    DisplayName = "Book", Identifier = "m234"
});
ListBox.Items.Add(new ListBoxItem {
    DisplayName = "Clover", Identifier = "h67"
});
ListBox.Items.Add(new ListBoxItem {
    DisplayName = "Pencil", Identifier = "a12"
});
ListBox.Items.Add(new ListBoxItem {
    DisplayName = "Book", Identifier = "x67"
});
ListBox.DisplayMember = "DisplayName";
ListBox.ValueMember = "Identifier";

现在,您的列表框显示相同的字符串列表,但为最终用户选择返回的值将不同。

感谢您的回复。一个问题;假设我想在MessageBox中显示所选项目的“标识符”。show()我应该使用什么代码?@wiki通常你会为自己保留一个小“地图”——比如,使用
标识符作为键的
字典listBoxIdMap
。这允许您选择
listBoxMap[selectedKey]
项,并显示其任何部分。