在向大家详细介绍C# ListBoxEx之前,首先让大家了解下ListBox,然后全面介绍C# ListBoxEx。
在一个点对点文件传输的项目中,我需要显示文件传输的实时信息:传输的文件列表和当前传输的文件,当时我想到了用ListBox,但是但我用了ListBox后,我发现它不能改变控件中文本想的颜色,于是我就想扩展一下ListBox控件------ListBoxEx。
我的目标是给空间加上图标,还要能时时改变控件文本颜色。于是从ListBox派生类
- public class ListBoxEx : ListBox {…}
为了操作方便我为ListBoxEx的每一项设计专门的类ListBoxExItem
- public class ListBoxExItem {…}
为了保持我这个控件与WinForm的标准控件的操作借口一致,我又重新设计了两个集合类:
- public class ListBoxExItemCollection : IList, ICollection, IEnumerator {}
- //这个类相对于标准ListBox中的ObjectCollection,
这个类作为ListBoxEx中的Items属性的类型- public class SelectedListBoxExItemCollection : : IList,
ICollection, IEnumerator{}- //这个类相对于标准ListBox中的SelectedObjectCollection,
这个类作为ListBoxEx中的SelectedItems属性的类型
下面看两个集合类的实现:
ListBoxExItemCollection的实现:为了做到对集合(Items)的操作能够及时反映到C# ListBoxEx中所以,此类只是对ListBox中Items(ObjectCollection类型)作了一层包装,就是把ListBox中Items属性的所有方法的只要是object类型的参数都转换成C# ListBoxExItem,比如:
- public void Remove(ListBoxExItem item)
- {
- this._Items.Remove(item); //_Items为ObjectCollection类型
- }
- public void Insert(int index, ListBoxExItem item)
- {
- this._Items.Insert(index, item);
- }
- public int Add(ListBoxExItem item)
- {
- return this._Items.Add(item);
- }
【编辑推荐】