问题描述
用winfram的combox做一个简单的与自定义类绑定的下拉框代码如下//绑定数据List<Timezone>zones=newList<Timezone>();zones.Add(Timezone.Hawaii);zones.Add(Timezone.NewDelhi);zones.Add(Timezone.Peking);zones.Add(Timezone.Atlantic);zones.Add(Timezone.Central);cbbox.DataSource=zones;cbbox.DisplayMember="title";//自定义类publicclassTimezone{publicstringindex;publicintoffset;publicstringtitle;publicbooldaylight;//静态实例publicstaticTimezoneHawaii=newTimezone("GMT+3",3,"Hawaii(GMT-10)",true);publicstaticTimezoneNewDelhi=newTimezone("GMT+5",5,"NewDelhi(GMT+5)",false);publicstaticTimezonePeking=newTimezone("GMT+8",8,"Peking(GMT+8)",false);publicstaticTimezoneAtlantic=newTimezone("GMT-4",-4,"AtlanticTime(GMT-4)",true);publicstaticTimezoneCentral=newTimezone("GMT-6",-6,"CentralTime(GMT-6)",true);publicTimezone(stringindex,intoffset,stringtitle,booldaylight){this.index=index;this.offset=offset;this.title=title;this.daylight=daylight;}}
感觉是没什么问题了,但是调试时下拉框中的每一项都显示timeZoneEditor.Form1+Timezone,timeZoneEditor.Form1是我的窗体类的名字,Timezone是我自定义类的名字。请问应该怎么写才能让下拉框中显示我想让他显示的字段(Timezone的title)?
解决方案
解决方案二:
木有设置DisplayMember、ValueMember。
解决方案三:
重写你的tostring方法
解决方案四:
publicstringtitle;->publicstringtitle{get;set;}
解决方案五:
引用1楼故乡山川的回复:
木有设置DisplayMember、ValueMember。
设置了displayMember但是似乎没有用,因为valueMember没用到所以没设置,我在使用下拉列表框的时候是直接使用和他绑定的对象的,不知这样的做法对不对
解决方案六:
引用2楼caozhy的回复:
重写你的tostring方法
这样做之后就可以了,但是为什么设置displayMember没有用呢?
解决方案七:
Timezone里,publicoverridestringToString(){returnthis.title;}