Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
listview正面的C#椭圆形_C#_Listview_Frontend - Fatal编程技术网

listview正面的C#椭圆形

listview正面的C#椭圆形,c#,listview,frontend,C#,Listview,Frontend,我有listview,它不支持第二列中的图像。我尝试创建卵形,但它总是在listview的背景上。所以没人能看到它。我尝试ovalShape1.BringToFront(),但它不起作用。有人能帮我吗?这里是一个带有外部变量的简单示例 我假设您已将图像添加到图像列表imageList1 int imgIndex = 0; private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) {

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

这里是一个带有外部变量的简单示例

我假设您已将图像添加到
图像列表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);
//..
像往常一样,错误检查由您决定


还要注意Invalidate,它会在更改imageindex后触发绘制和后续DrawSubItem事件。当基本值发生变化时,系统会处理这些问题。

您做过任何研究吗?你找到什么了吗。。?关键字不是“ovalshape”,而是“draw subitem”。我尝试用这种方式,它工作正常,但是当我想更改图片或更新图片时,我应该做什么。要绘制的逻辑在
listView1\u DrawItem
事件中处理。您必须根据需要对其进行编码以提高灵活性。
listView1\u DrawItem
仅在我创建项目时有效。我能做些什么来切换已有物品的图片,例如按下按钮。谢谢。我只需要函数
listView1.Invalidate()这是至关重要的。现在它可以按我的要求工作了。