天极IT资讯短信服务 电脑小技巧
|
介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 | | 在一个点对点文件传输的项目中,我需要显示文件传输的实时信息:传输的文件列表和当前传输的文件,当时我想到了用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)的操作能够及时反映到ListBoxEx的控件中所以,此类只是对ListBox中Items(ObjectCollection类型)作了一层包装,就是把ListBox中Items属性的所有方法的只要是object类型的参数都转换成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); } | 由上可知,ListBoxExItemCollection中有一个构造函数来传递ListBox中的Items对象
private ObjectCollection _Items;
public ListBoxExItemCollection(ObjectCollection baseItems) { this._Items = baseItems; } | 而SelectedListBoxExItemCollection类的实现也用同样的方法,只不过是对SelectedObjectCollection包装罢了。
集合实现后,再来看ListBoxExItem的实现:
|
|