列表视图正面的C#ovalshape

时间:2014-06-29 19:12:28

标签: c# listview frontend

我有listview,它不支持第二列中的图像。我尝试创建ovalshape,但它的olways是listview的背景。所以没有人能看到它。我尝试ovalShape1.BringToFront();,但它不起作用。有人可以帮帮我吗?

1 个答案:

答案 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事件。当基础价值发生变化时,系统会处理这个问题。