El evento DrawSubItem se lanza por cada subitem, no tienes que recorrer el listview entero:
Código C#:
Ver originalprivate void lvLlamadas_DrawSubItem(object sender,
DrawListViewSubItemEventArgs e)
{
//Verificas si estás en la columna de estado
if (e.Header != chEstado)
{
e.DrawDefault = true;
return;
}
else
{
//Si el item no está seleccionado, dibujar el background por defecto
if ((e.ItemState & ListViewItemStates.Selected) == 0)
{
e.DrawBackground();
}
//Dependiendo del valor del estado
switch(e.SubItem.Text)
{
case "Realizada":
e.Graphics.DrawImage(EjemploListView.Properties.Resources.realizada, imageRect);
break;
case "Pendiente":
e.Graphics.DrawImage(EjemploListView.Properties.Resources.Pendiente, imageRect);
break;
case "Recibida":
e.Graphics.DrawImage(EjemploListView.Properties.Resources.Recibida, imageRect);
break;
}
}
}