如何为ListBox项提供有意义的名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为ListBox项提供有意义的名称相关的知识,希望对你有一定的参考价值。
我已经使用以下类型的项填充了一个listBox:
Tuple<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));
答案
好的,我现在发现了如何做到这一点。它是通过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
* ...
以上是关于如何为ListBox项提供有意义的名称的主要内容,如果未能解决你的问题,请参考以下文章
Apache Derby 为我用有意义的名称创建的索引提供了奇怪的名称