将以下文本视为两个列表(用'分隔:'),因为您可以看到第二行始终是唯一的,但第一行中的项可能是重复的;
Book:m234
Clover:h67
Pencil:a12
Book:x67
我想用第一列(Book,Clover,...)中的项目填充列表框,但问题是,当我要检索列表框中的所选项目时,我可以'确保它在第二列中的相应值。 (例如,如果是' Book');
注意:我没有找到解决此问题的任何解决方法,因为有很多。我想知道的是:
是否有可能以对象携带两个值(每列的每个值/属性)的方式传递和反对ListBox.Items.Add()
,并且在获取所选项目时,我们将拥有一个对象两个值(可能作为对象的属性)?
C#中有可能这样吗? (.NET 4.5)
答案 0 :(得分:1)
您可以传递将带有名称的数据与ListBox
配对的对象,并使用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";
现在,您的列表框显示相同的字符串列表,但为最终用户选择返回的值会有所不同。