public class UserComboBox:System.Windows.Forms.ComboBox
{
private ImageList imagelist;
public ImageList ImageList
{
get
{
return this.imagelist;
}
set
{
this.imagelist = value;
}
}
public UserComboBox()
{
base.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs ea)
{
ea.DrawBackground();
ea.DrawFocusRectangle();
Size imageSize = this.imagelist.ImageSize;
Rectangle bounds = ea.Bounds;
try
{
ComboBoxExItem item = (ComboBoxExItem)base.Items[ea.Index];
if (item.ImageIndex != -1)
{
this.imagelist.Draw(ea.Graphics, bounds.Left, bounds.Top, item.ImageIndex);
ea.Graphics.DrawString(item.Text, ea.Font, new SolidBrush(ea.ForeColor), (float)(bounds.Left + imageSize.Width), (float)bounds.Top);
}
else
{
ea.Graphics.DrawString(item.Text, ea.Font, new SolidBrush(ea.ForeColor), (float)bounds.Left, (float)bounds.Top);
}
}
catch
{
if (ea.Index != -1)
{
ea.Graphics.DrawString(base.Items[ea.Index].ToString(), ea.Font, new SolidBrush(ea.ForeColor), (float)bounds.Left, (float)bounds.Top);
}
else
{
ea.Graphics.DrawString(this.Text, ea.Font, new SolidBrush(ea.ForeColor), (float)bounds.Left, (float)bounds.Top);
}
}
base.OnDrawItem(ea);
}
}
public class ComboBoxExItem
{
private string _text;
public string Text
{
get { return _text; }
set { _text = value; }
}
private int _imageIndex;
public int ImageIndex
{
get { return _imageIndex; }
set { _imageIndex = value; }
}
public ComboBoxExItem(string text, int imageIndex)
{
_text = text;
_imageIndex = imageIndex;
}
}
以上代码是继承了ComboBox控件,并将Combox中的项重绘。
使用:
this.userComboBox1.ImageList = this.imageList1;
this.userComboBox1.Items.Add(new ComboBoxExItem(" text0", 0));