(原创文章,转载请注明来源:http://blog.csdn.net/hulihui)
0、前言
组合框ComboBox是一个十分常用的多功能窗体控件,兼具文本框(TextBox)与列表框(ListBox)两控件的特点,并独具特性AutoCompleteMode。但笔者在实际项目开发中往往感到如下方面的不足:
- 不能分别设置框高与项高,在调整项高ItemHeigth时也调整了组合框本身的高度;
- 绑定数据源时,只有DisplayMember与ValueMember两个属性,不能呈现多列信息。
在著名开源网CodeProject上找了年份较新的两篇文章:A data-bound multi-column combobox(Nishant Sivakumar, 2007.7)介绍的数据源绑定控件MultiColumnComboBox基本满足要求,但不能独立设置框高和项高;Searchable MultiColumn ComboBox with Linked TextBox(Darryl Caillouet,2008.2) 介绍的同名控件功能强大,也没有分开框高与项高,且不能指定多列的呈现顺序。于是,借鉴这两个开源倥件的主要技术与思路,在增补与完善部分功能后编写出MultiColumnComboBoxEx控件,主要功能如下:
- 多数据列显示:可以在下拉框和文本框中显示多列信息;
- 指定列与顺序:可以指定需要显示的数据源列名,同时指定输出顺序;
- 框高项高分离:可以分别设定文本框本身高度与下拉框的项高度;
- 查找函数ItemIndexOf:提供了代替Items.Index的数据项查找函数ItemIndexOf;
- RTL语言风格:支持一些国家或民族的RightToLeft(RTL)语言风格。
此外,还增补与完善了一些实现细节,例如:是否显示分隔线、是否在框中显示多列、下拉框文本垂直居中、获取全部显示列文本框、DropDownWidth/DropDownHeight计算、RTL时增加左边宽度,等等。
1、MultiColumnComboBoxEx介绍
该控件派生自ComboBox,下面介绍其增加与重载(new)的一些属性、功能和及使用:
- ComboBo