值在列表框中显示为 class 名称
Values appear as the class name in the listbox
我正在将数据库中的字段读入列表,就像这样
PaceCalculator pace = new PaceCalculator();
List<PaceCalculator> Distancelist = new List<PaceCalculator>();
while (Reader.Read()) //Loops through the database and adds the values in EventDistance to the list
{
pace.Distance = (int)Reader["EventDistance"];
Distancelist.Add(pace);
}
我想将值放入列表框中,但是当我这样做时:
listBox1.DataSource = Distancelist;
它只显示 class 个名字,即 PaceCalculator
。它显示正确数量的值,它只显示 class 名称。我想看看里面的整数。
指定PaceCalculator
的属性显示。
listBox1.DataSource = Distancelist;
listBox1.DisplayMember = "Distance";
ListBox
控件允许您从集合中选择 属性 以显示给用户。
还有一个 ValueMember
属性 允许您为 ListBox
中的每个项目指定值。假设您的数据包含一个名为 "SomeUniqueRecordId" 的 ID,例如:
listBox1.ValueMember = "SomeUniqueRecordId";
你有两个选择,
- 将 class 中的
ToString
覆盖为 return 所需的字符串
- 或,如果你只想显示
Distance
然后指定为DisplayMember
喜欢:
listBox1.DisplayMember = "Distance";
listBox1.DataSource = Distancelist;
这会显示列表中的距离元素。或者您可以在 class PaceCalculator
中覆盖 ToString
,例如:
public override string ToString()
{
return string.Format("{0},{1},{2}", property1, property2, property3);
}
编辑:
根据您的评论和查看您的代码,您做错了一件事。
this only displays the last value in the list, 46, 8 times
您在每次迭代的列表中添加了 class 的相同实例 (pace
)。因此它持有最后一个值 (46)
。您需要在迭代中实例化一个新对象,例如:
while (Reader.Read())
{
PaceCalculator pace = new PaceCalculator();
pace.Distance = (int)Reader["EventDistance"];
Distancelist.Add(pace);
}
我正在将数据库中的字段读入列表,就像这样
PaceCalculator pace = new PaceCalculator();
List<PaceCalculator> Distancelist = new List<PaceCalculator>();
while (Reader.Read()) //Loops through the database and adds the values in EventDistance to the list
{
pace.Distance = (int)Reader["EventDistance"];
Distancelist.Add(pace);
}
我想将值放入列表框中,但是当我这样做时:
listBox1.DataSource = Distancelist;
它只显示 class 个名字,即 PaceCalculator
。它显示正确数量的值,它只显示 class 名称。我想看看里面的整数。
指定PaceCalculator
的属性显示。
listBox1.DataSource = Distancelist;
listBox1.DisplayMember = "Distance";
ListBox
控件允许您从集合中选择 属性 以显示给用户。
还有一个 ValueMember
属性 允许您为 ListBox
中的每个项目指定值。假设您的数据包含一个名为 "SomeUniqueRecordId" 的 ID,例如:
listBox1.ValueMember = "SomeUniqueRecordId";
你有两个选择,
- 将 class 中的
ToString
覆盖为 return 所需的字符串 - 或,如果你只想显示
Distance
然后指定为DisplayMember
喜欢:
listBox1.DisplayMember = "Distance";
listBox1.DataSource = Distancelist;
这会显示列表中的距离元素。或者您可以在 class PaceCalculator
中覆盖 ToString
,例如:
public override string ToString()
{
return string.Format("{0},{1},{2}", property1, property2, property3);
}
编辑:
根据您的评论和查看您的代码,您做错了一件事。
this only displays the last value in the list, 46, 8 times
您在每次迭代的列表中添加了 class 的相同实例 (pace
)。因此它持有最后一个值 (46)
。您需要在迭代中实例化一个新对象,例如:
while (Reader.Read())
{
PaceCalculator pace = new PaceCalculator();
pace.Distance = (int)Reader["EventDistance"];
Distancelist.Add(pace);
}