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