列表框项目无法正常显示
我有一个列表框和一个ListItem对象,我将其添加到列表框中,以便我可以从所选项目中检索一个与显示的成员不同的值。
class ListItem { public string DisplayMember; public string ValueMember; public ListItem(string n,string v){ DisplayMember = n; ValueMember = v; } } public CompareTimeFramesForm() { InitializeComponent(); listBox1.Items.Add(new ListItem("# of Bookings", null)); listBox1.Items.Add(new ListItem("People", "guaranteed_count")); }
这是一个winform FYI。 我遇到的问题是实际列表框中显示的项目具有对象,而不是我希望在ListItem构造函数的第一个参数中显示的字符串。 它看起来像Bookings.Helpers.ListItem
而不是“#of Bookings”
在设计器中,我将displayMember属性更改为DisplayMember,但它无法正常工作。
来自MSDN:
将对象添加到ListBox时,控件将使用对象的ToString方法中定义的文本,除非在DisplayMember属性中指定了对象中的成员名称。
ListBox
会将项目转换为调用ToString()
字符串。 在您的情况下,您只需要像这样更改ListItem
类:
class ListItem { public string DisplayMember; public string ValueMember; public ListItem(string n,string v) { DisplayMember = n; ValueMember = v; } public override string ToString() { return DisplayMember; } }
作为替代方案,您可以使用DisplayMember
属性(在设计器中或使用代码)来使用您的属性(您调用该属性DisplayMember
但它的名称是免费的,因为它必须被指定并且它不使用任何约定):
listBox1.DisplayMember = "DisplayMember";
试试这个它应该适合你!
class ListItem { public string DisplayMember; public string ValueMember; public ListItem(string n,string v){ DisplayMember = n; ValueMember = v; }
}
public CompareTimeFramesForm() { InitializeComponent(); listBox1.Items.Add(new ListItem("# of Bookings", null).DisplayMember); listBox1.Items.Add(new ListItem("People", "guaranteed_count").DisplayMember); }