【发布时间】:2009-12-16 20:57:47
【问题描述】:
在我正在开发的应用程序中,我需要维护一个当前加载的项目列表,并在 ListBox 中显示每个项目的名称(好的,多个 ListBox,但这既不是这里也不是那里)。
class Project
{
public String Name;
// Etc. etc...
}
我有一个 BindingList 对象,其中包含所有已加载的项目,并将其绑定到我的 ListBox。
private BindingList<Project> project_list = new BindingList<Project>();
private ListBox project_listbox;
private void setList()
{
project_listbox.DisplayMember = "Name";
project_listbox.ValueMember = "Name";
project_listbox.DataSource = project_list;
}
但是,当我这样做时,project_listbox 中显示的所有内容都是项目的一组类名。我在这里错过了什么吗?我能找到的关于将列表绑定到 ListBox 的每个参考都使用了非常相似的设置。
【问题讨论】:
-
默认情况下,列表框将在您的类上调用 ToString() 以获取显示值。您可以轻松实现 public Override ToString() 并返回 Name 作为字符串结果。
-
如果您希望某个属性成为 ValueMember,这是一个糟糕的解决方案:) 您仍然需要创建一个 {get;私人集}。否则,ValueMember 将不起作用。