ComboBox控件DropDownList样式item添加
C#的下拉列表框,有三种样式,我们常用的就是DropDownList样式,如图:
但是,我在昨天使用的时候,发现一个问题。此样式的ComboBox在添加项,也就是填充下拉列表的内容的时候,有两种方法,一种是用DataTable绑定数据的形式,这种形式是官方推荐的。但是有时不想构造 DataTable ,或者对它不熟悉时,依然想通过items.add()方法来添加内容。但是我们却无法控制添加内容的Name和Value,也就是列表框内显示内容,以及它内部实际的值,添加进去的Name、Value值是一样的。
经过查阅,想到了KeyValuePair,这不是一个键值对嘛,用在这儿刚合适啊!结果又出现了问题,在列表的的现实中,不仅显示了Key,还显示了Value,形成这种样式[Key,Value],显然这是不符合设计要求的。继续查阅,发现有一种方法,就是创建一个自定义类,来完成这一功能,但是我发现了一个奇怪现象,查阅的代码里面都重写了ToString()方法,很纳闷,为什么要重写ToString()呢?!
在好奇之下,于是查看了KeyValuePair类的代码,终于被我发现了原因,原来其内部也对ToString()进行了重写,ToString()方法体的代码,导致了最后显示在 下拉列表 中的内容是Key+Value,原来是这个原因。既然这样,那我可以继承KeyValuePair,然后重写ToString()让它只返回Key,这样显示在 下拉列表 中的内筒就不会是Key+Value了。结果依然失败,原来KeyValuePair不是一个类,而是一个结构体,无法作为基类被继承。
到这里,彻底没法了,只能自定义一个类了。直接复制KeyValuePair的源代码,修改了一下ToString()方法,结果大功告成。搞来搞去,最后还是自定义了一个类,但也明白了一些东西,虽然绕了一大圈!
自定义类代码如下:
public class KeyValuePairCY
有不理解朋友,可以留言评论!平日在线比较多,可以实时交流!