ListView 图标显示在subitem中
2009-12-22 10:16:28
1. 把需要用的图片存入imageList控件中。
2. 设置listview的OwnerDraw属性:true。
3. 在listview的DrawColumnHeader事件中写如下代码
view plaincopy to clipboardprint?
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true; // 由操作系统绘制此标题。
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true; // 由操作系统绘制此标题。
}
4. 在listview的DrawSubItem事件中绘制图片
view plaincopy to clipboardprint?
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
Image tmp_image = this.imageList1.Images[0]; //声明Image实例,用来指定后面要画的那个图标
Rectangle rect = new Rectangle(); //指明画的矩形对象
if (e.ColumnIndex == 1) //在第几列画
{
switch (e.SubItem.Text)
{
case "2":
tmp_image = this.imageList1.Images[0];
break;
}
rect.X = e.Bounds.X;
rect.Y += e.Bounds.Y;
rect.Width = tmp_image.Width;
rect.Height = e.Bounds.Height;
e.Graphics.DrawImage(tmp_image, rect);
}
else if (e.ColumnIndex == 2)
{
switch (e.SubItem.Text)
{
case "3":
tmp_image = this.imageList1.Images[1];
break;
}
rect.X = e.Bounds.X;
rect.Y += e.Bounds.Y;
rect.Width = tmp_image.Width;
rect.Height = e.Bounds.Height;
e.Graphics.DrawImage(tmp_image, rect);
}
else if (e.ColumnIndex == 3)
{
switch (e.SubItem.Text)
{
case "4":
tmp_image = this.imageList1.Images[2];
break;
}
rect.X = e.Bounds.X;
rect.Y += e.Bounds.Y;
rect.Width = tmp_image.Width;
rect.Height = e.Bounds.Height;
e.Graphics.DrawImage(tmp_image, rect);
}
else if (e.ColumnIndex == 4)
{
switch (e.SubItem.Text)
{
case "1":
tmp_image = this.imageList1.Images[0];
break;
case "2":
tmp_image = this.imageList1.Images[1];
break;
case "5":
tmp_image = this.imageList1.Images[2];
break;
case "不等于":
tmp_image = this.imageList1.Images[3];
break;
}
rect.X = e.Bounds.X;
rect.Y += e.Bounds.Y;
rect.Width = tmp_image.Width;
rect.Height = e.Bounds.Height;
e.Graphics.DrawImage(tmp_image, rect);
}
else
{
e.DrawDefault = true;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chencknj/archive/2009/12/22/5053893.aspx