日期:2012-01-29  浏览次数:20408 次

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;
    &