我已经使用类型为
的项填充了一个listBoxTuple<List<Point>,List<int>>
现在,当我运行我的应用程序时,listBox窗口显示如下项目:
(System.Collection.Generic.List'1[System.Drawing.Point].Systen,Collection...)
(System.Collection.Generic.List'1[System.Drawing.Point].Systen,Collection...)
(System.Collection.Generic.List'1[System.Drawing.Point].Systen,Collection...)
相反,我希望listBox用字符串“Region”+ item的索引显示每个项目。
像这样:
Region0
区域1
区域2
...
要填充listBox,我使用以下代码:
listBoxPossibleCandidates.DataSource = possibleCandidates;
可能的候选人用这样的循环填充:
possibleCandidates.Add(Tuple.Create(regionPoints, regionIntensities));
答案 0 :(得分:1)
好的,我现在发现了如何做到这一点。 它是通过ListControl.DisplayMember属性完成的。
它显示的原因(System.Collection.Generic.List`1 [System.Drawing.Point] .Systen,Collection ...)是因为:
“如果对象上不存在指定的属性或者DisplayMember的值是空字符串(”“),则会显示对象的ToString方法的结果。”
我使用的代码:
class Region
{
private int myIndex;
private List<Point> regionCoordinates;
private List<int> regionIntensitiesDistinct;
public Region(List<Point> regionCoordinates, List<int> regionIntensities, int index)
{
this.regionCoordinates = regionCoordinates;
this.regionIntensitiesDistinct = regionIntensities.Distinct().ToList();
this.myIndex = index;
}
public string MyDescription
{
get
{
return "Region-" + myIndex;
}
}
public List<Point> getRegionCoordinates()
{
return regionCoordinates;
}
public List<int> getRegionIntensitiesDistinct()
{
return regionIntensitiesDistinct;
}
}
现在这就是我填充listBox的方式:
List<Region> possibleCandidates = new List<Region>();
//using loop I add all the regions:
possibleCandidates.Add(new Region(regionPoints, regionIntensities, possibleCandidates.Count));
//after possibleCandidates are populated I pass them to the listBox for display
listBoxPossibleCandidates.DataSource = possibleCandidates;
listBoxPossibleCandidates.DisplayMember = "MyDescription";
listBox输出现在是:
* Region-0
* Region-1
* Region-2
* ...