我有listview,它不支持第二列中的图像。我尝试创建ovalshape,但它的olways是listview的背景。所以没有人能看到它。我尝试ovalShape1.BringToFront();
,但它不起作用。有人可以帮帮我吗?
答案 0 :(得分:0)
这是一个带外部变量的简单示例。
我假设您已将图片添加到ImageList imageList1
。
int imgIndex = 0;
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
if (e.ColumnIndex == 1)
e.Graphics.DrawImage(imageList1.Images[imgIndex], e.Bounds);
else e.DrawDefault = true;
}
private void button1_Click(object sender, EventArgs e)
{
imgIndex++;
listView1.Invalidate();
}
您可能更希望从每个行的ListViewItem
中的数据中获取imageindex,可能是这样的:
//..
e.Graphics.DrawImage(imageList1.Images[Convert.ToInt16( e.SubItem.Text) ], e.Bounds);
//..
通常情况下,错误检查取决于你。
另请注意,在更改imageindex后,必须触发Paint,以及随后的DrawSubItem事件。当基础价值发生变化时,系统会处理这个问题。