地市分站
用户名
密  码
您现在的位置是:树人网首页 / 计算机等级考试 / 最新消息 / 文章浏览
设计带图标和自定义颜色的ListBox
文章来源:来源网络 发表时间:2008-06-09 点击次数
在一个点对点文件传输的项目中,我需要显示文件传输的实时信息:传输的文件列表和当前传输的文件,当时我想到了用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的实现:

第 页

责任编辑:qwer19871212

相关文章
公告栏

“蓝焰杯”第二届河南教育十大新闻人物火热评选中!!

点击参加评选,为你心目中的新闻人物投上一票>>>>
频道内容精选
[计算机考试]程序员必考的知识点
论坛/博客精选