好久没有给大家东西了.看见了这个.感觉不错.ListBox with icon

Introduction
Hello all,
All of us like more color or image in our control, so am i.
This article, I give custom ListBox class that has image property for each item.
Note: my article has no source code because it very short and easy.
The first: we create 2 class for GListBox
...
// GListBoxItem class
public class GListBoxItem
{
        private string _myText;
        private int _myImageIndex;
        // properties
        public string Text
        {
            get {return _myText;}
            set {_myText = value;}
        }
        public int ImageIndex
        {
            get {return _myImageIndex;}
            set {_myImageIndex = value;}
        }
        //constructor
        public GListBoxItem(string text, int index)
        {
            _myText = text;
            _myImageIndex = index;
        }
        public GListBoxItem(string text): this(text,-1){}
        public GListBoxItem(): this(""){}
        public override string ToString()
        {
            return _myText;
        }
    }//End of GListBoxItem class

    // GListBox class
    public class GListBox : ListBox
    {
        private ImageList _myImageList;
        public ImageList ImageList
        {
            get {return _myImageList;}
            set {_myImageList = value;}
        }
        public GListBox()
        {
            // Set owner draw mode
            this.DrawMode = DrawMode.OwnerDrawFixed;
        }
        protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.DrawFocusRectangle();
            GListBoxItem item;
            Rectangle bounds = e.Bounds;
            Size imageSize = _myImageList.ImageSize;
            try
            {
                item = (GListBoxItem) Items[e.Index];
                if (item.ImageIndex != -1)
                {
                    imageList.Draw(e.Graphics, bounds.Left,bounds.Top,item.ImageIndex);
                    e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor),
                                bounds.Left+imageSize.Width, bounds.Top);
                }
                else
                {
                    e.Graphics.DrawString(item.Text, e.Font,new SolidBrush(e.ForeColor), bounds.Left,
                            bounds.Top);
                }
            }
            catch
            {
                if (e.Index != -1)
                {
                    e.Graphics.DrawString(Items[e.Index].ToString(),e.Font,
                            new SolidBrush(e.ForeColor) ,bounds.Left, bounds.Top);
                }
                else
                {
                    e.Graphics.DrawString(Text,e.Font,new SolidBrush(e.ForeColor),bounds.Left,
                                bounds.Top);
                }
            }
            base.OnDrawItem(e);
        }
}//End of GListBox class

After that, in order to our code, we could use :
...
GListBox lb = new GListBox();
lb.ImageList = imageList;
lb.Items.Add( new GListBoxItem("Image 1",0));
lb.Items.Add( new GListBoxItem("Image 2",1));
lb.Items.Add( new GListBoxItem("Image 3",2));
....
That's all
Thanks for reading.
Nguyen Ha Giang
mailto: giang@citd.edu.vn

时间: 2024-10-24 14:54:25

好久没有给大家东西了.看见了这个.感觉不错.ListBox with icon的相关文章

想做的东西太多了,也越来也迷茫了

 作为一个刚上研究生的学生,新环境总是让人兴奋的.本来,自己是个相当有主见的人.可是,也就是在这样的环境下,我变得越来越迷茫.      为什么迷茫?想先问一个问题,你觉得"收藏"是有意义的吗?深压箱底,一辈子可能都用不到几次,你却为了寻找这件宝物花了大量的光阴.那么这件宝物对你的意义何在呢?我现在遇到的,也就是这样的问题.         说下我最近想做的事情:     1.作为一名通信业信号与信息处理的研究生,我的首要责任首先是学好通信理论,可是保研到实验室快一年了,我虽然在这里工

VS2005中,我不用TreeView的+到-这种树型菜单,我需要的是象打开XP资源窗口左边的可以上下收缩中的效果,给我一个具体的东西吧,急切期望中..

问题描述 万分感激............. 解决方案 解决方案二:CollapsePanel,用javascript或第三方控件来做解决方案三:试试这个吧Infragistics2.WebUI.UltraWebListbar.v6.2偶用过,可以收缩,还可以设置托动位置等,感觉不错解决方案四:关注中...解决方案五:TOcxrs:谢谢!关于Infragistics2.WebUI.UltraWebListbar.v6.2哪里有这个东西,怎么用的资料或者示例可以提供吗?解决方案六:我下了这个Inf

是不是一般在公司都很难学到东西的?

问题描述 我所在的公司主要是做银行个人贷款的项目,就是拿一个原型,然后到各银行客户那里,根据银行的具体需求进行修修补补,但大致架子是不会变的所以不是全新开发,一般改动也不大,个人觉得除了银行本身的业务知识,在技术上很难学到东西在银行客户开发的一年中 ,我做过接口开发,太郁闷了,整体复制粘贴,也做了一些前台开发,不过是修修补补,再加上使用的框架很垃圾, 所以更加提不起劲来现在居然还让我做版本管理,就是别人有东西要投测试,我就负责合版本,然后提交给行方,这更不是我想做的我向别人抱怨的时候,人家跟我说

rmi-Java RMI疑问(stub、classpath相关)

问题描述 Java RMI疑问(stub.classpath相关) 最近在看之前搞得RMI的东西,搞了好久还是有很多东西没明白,这里列出来希望大家能帮忙解答下==,也算是自己备忘 说jdk1.5之后RMI的stub是动态生成的,这个是利用动态代理吗? 那1.5之前的stub生成会不会类似cglib之类的了-- 如果是动态生成的话,是否仍然需要在registry那边设置classpath?(自己测试,包名不同的registery和远程对象分别部署时好像还是会报ClassNotFound错误) RM

为了网站,我放弃了学业!

时间过的真快,好久都没有写东西,其实每天都有要写东西的想法,但又不知道写什么了,不想写一些展示自己无知的技术文章了,生活琐事更是不值一提,思想上感觉已经没有什么可写的了,以后我会用文字慢慢的把自己内心都表露给大家. 06年8月的时候,我在自己的BLOG里写下了这样子的一段话:"暑假就在迷迷糊糊中过去了一大半,想到马上开学的9月自己都大3了,也快毕业了,心里其实也挺复杂的,突然一下想起了CCTV那句著名的广告词:"人生就象是旅行...不必在乎目的地...在乎的...只是沿途的风景以及看风

登陆框控件

控件 好久以前作的东西,最近拿出来溜溜,最近一直没有作应用程序方面的东西了,有点生疏! 希望我的这篇东西能对您有所帮助,大家共同探讨共同进步,此文章比较简单!是作一个通用的登陆框控件! 首先建一解决项目LoginControl,添加一个类库的项目LoginControl,然后添加用户控件ctlLogin 然后在ctlLogin.cs文件中写代码 //ctlLogin.cs using System;using System.Collections;using System.ComponentMo

基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享_javascript技巧

前言:前段时间一直都好忙也就好久没有写些东西了,最近手上的事刚好告些段落了,把以前空写的写插件都拿出来分享下吧,希望对大家有些帮助,也希望有高手能帮忙指点下我的写不足和错误,一直以来自己写的东西都是在用,性能方面个人只能尽量靠近问题还很多--真心求指点:插件简介:执行渐隐等动画效果,可以这个插件为一个附加插件 可以配合前面我发的一个弹出层 等等之类的东西用增加js展示的趣味性,使用方法:在下面的js代码里面前面写了,大家可以看看直接复制粘贴就可以用了有问题可以联系我</pJS代码如下 展示方式可

一个五年 Android 开发者百度、阿里、聚美、映客的面试心经

花絮 也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈.某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我. 先简单说说我最近的面试经历吧.面试的公司很多,其中有让我心血沸腾的经历,也有让我感到失望到无助的经历,我将这些体会都记录下来,细想之后很值得,面了这么多公司,要是最后什么也没有留下来,那就太浪费了.至少对于我来说有些东西在整理总结之后才能得到一个肯定的答案.希望这些能对即将换工作或者打算看看机会的

请听一个故事------&amp;gt;讲述一段失败的创业经历 ,希望你能从中受到启发

转载于:http://blog.csdn.net/feng88724/article/details/16350655 转载坛子里一哥们写的创业经历,我觉得写的挺好的.他本人博客删除了这篇文章,可能是不希望被有些人看见,我就不注明是谁了.如有问题,请与我联系. 好久没写过东西了,本来想旅行到处散散心的,但是现在上海简直是太热了,坑爹的40度啊,哪里也不想去,决定来星巴克坐坐,讲讲这一年多来的创业故事,以及分享一下创业失败经验!     记得2012年3月那会,人还在腾讯(深圳总部),有天突然考虑