当我有一个包含对象列表的中间层类时,我使用的 ListBox 无法正确填充 DisplayMembers。没有图层类一切都很好,但我的项目需要它。这是一个非常简化的示例;
乘客
class Passenger
{
private string name;
public Passenger(string custName)
{
name = custName;
}
public string Name
{
get { return name; }
}
}
飞机
class Plane
{
public List<LayerClass> passengerList;
public Plane()
{
// Using this instead of using Passenger,
// if Passenger is used there are no problems
passengerList = new List<LayerClass>();
}
}
图层类
class LayerClass
{
private Passenger p;
private int ID;
public Passenger P
{
get { return p; }
set { p = value; }
}
}
假设我用三个乘客姓名填充飞机,然后在下面编写代码;
BindingSource bs = new BindingSource();
bs.DataSource = plane.passengerList;
aListBox.DataSource = bs;
aListBox.DisplayMember = "Name";
aListBox 将显示多行文本“ DataBinding.TestApp,LayerClass ”,而不是乘客的姓名。如果我插入此代码bs.DataMember = "P";
或aListBox.DisplayMember = "P.Name";
,它将仅在 ListBox 中显示第一个乘客的姓名,而忽略所有其他姓名。
如何在 ListBox 中显示所有乘客姓名?没有覆盖乘客类的 ToString() 方法。可能是我缺少的一些简单的东西,但我是 DataBinding 的新手。这是一个 Windows 窗体应用程序,对我可以使用的内容有严格的限制。不允许使用 XAML 或 WPF。