设计带图标和自定义颜色的ListBox

设计带图标和自定义颜色的ListBox,第1张

设计带图标和自定义颜色的ListBox,第2张

在一个点对点的文件传输项目中,我需要显示文件传输的实时信息:传输的文件列表和当前传输的文件。当时想到用ListBox,但是用了ListBox之后发现它不能改变控件中文本的颜色,于是想扩展ListBox控件——ListBox ex。


我的目标是在空之间添加图标,并不时改变控件文本的颜色。然后从ListBox派生一个类。

公共类ListBoxEx : ListBox {…}

为了操作方便,我为ListBoxEx的每一项设计了一个特殊的类ListBoxExItem。

公共类ListBoxExItem {…}

为了使我的控件与WinForm的标准控件的操作借口保持一致,我重新设计了两个集合类:

class public listbox item collection:ilist,icollection,ienumerator { }
/该类相对于标准listbox中的ObjectCollection,该类充当ListBoxEx中的Items属性的type。

class public selectedListBoxitemcollection::ilist,icollection,ienumerator { }
/该类相对于标准listbox中的SelectedObjectCollection,该类充当ListBoxEx中SelectedItems属性的类型。

看看下面两个集合类的实现:

ListBoxExItemCollection的实现:为了及时将集合(Items)的操作反映到ListBoxEx的控件中,这个类只对ListBox中的Items(ObjectCollection类型)进行包装,即ListBox中Items属性的所有参数只要是object类型的都转换成ListBoxExItem,比如:

public void Remove(ListBoxExItem)
{
this。_Items。移除(项目);//_Items的类型为ObjectCollection
}

public void Insert(int index,ListBoxExItem item)
{
this。_Items。Insert(索引,项);
}

public int Add(ListBoxExItem)
{
return this。_Items。添加(项目);
}

从上面可以看出,ListBoxExItemCollection中有一个构造函数来传递ListBox中的Items对象。

私有ObjectCollection _ Items

public ListBoxExItemCollection(object collection base items)
{
this。_ Items = baseItems
}

而SelectedListBoxItemCollection类的实现使用了相同的方法,只是包装了SelectedObjectCollection。

集合实现后,我们来看看ListBoxExItem的实现:

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 设计带图标和自定义颜色的ListBox

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情