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

时间:2016-03-13 11:22:27

标签: c# object collections listbox

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

Book:m234
Clover:h67
Pencil:a12
Book:x67

我想用第一列(Book,Clover,...)中的项目填充列表框,但问题是,当我要检索列表框中的所选项目时,我可以'确保它在第二列中的相应值。 (例如,如果是' Book');

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

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

C#中有可能这样吗? (.NET 4.5)

1 个答案:

答案 0 :(得分:1)

您可以传递将带有名称的数据与ListBox配对的对象,并使用DisplayMemberValueMember控制显示的内容以及返回给您的内容:

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";

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