繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 好久没有给大家东西了.看见了这个.感觉不错.ListBox with icon

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

2007-08-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介: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 ...

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

责任编辑:admin
相关文章