Foros del Web » Programación para mayores de 30 ;) » .NET »

imagen en listview

Estas en el tema de imagen en listview en el foro de .NET en Foros del Web. Hola a todos Estoy realizando una aplicación en C# donde tengo un listView en el que se registran las llamadas, con campos como fecha, hora, ...
  #1 (permalink)  
Antiguo 06/08/2013, 14:43
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 2 meses
Puntos: 0
imagen en listview

Hola a todos

Estoy realizando una aplicación en C# donde tengo un listView en el que se registran las llamadas, con campos como fecha, hora, cliente, estado (pendiente o realizada), etc...

Quisiera colocar una imagen en el campo estado, dependiendo que sea pendiente o realizada pero no se como realizarlo.

Si alguien puede indicarme el camino os lo agradecería mucho

Un saludo
  #2 (permalink)  
Antiguo 07/08/2013, 12:44
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: imagen en listview

¿Qué tecnología usas? Windows Forms, WPF, ASP.NET, ...

¿Quieres algo así?:



Un saludo.
  #3 (permalink)  
Antiguo 07/08/2013, 16:10
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: imagen en listview

Exactamente algo así es lo que quiero. Utilizo Windows form.
  #4 (permalink)  
Antiguo 08/08/2013, 14:34
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: imagen en listview

Hasta ahora he hecho esto;

Código C:
Ver original
  1. private void lvLlamadas_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
  2.         {
  3.             if (e.Header != chEstado)
  4.             {
  5.                 e.DrawDefault = true;
  6.                 return;
  7.             }
  8.  
  9.             e.DrawBackground();
  10.             var imageRect = new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
  11.  
  12.             for (int i = 0; i <= lvLlamadas.Items.Count - 1; i++)
  13.             {
  14.                 if (lvLlamadas.Items[i].SubItems[3].Text.Equals("Realizada"))
  15.                     e.Graphics.DrawImage(EjemploListView.Properties.Resources.realizada, imageRect);
  16.                 if (lvLlamadas.Items[i].SubItems[3].Text.Equals("Pendiente"))
  17.                     e.Graphics.DrawImage(EjemploListView.Properties.Resources.Pendiente, imageRect);
  18.                 if (lvLlamadas.Items[i].SubItems[3].Text.Equals("Recibida"))
  19.                     e.Graphics.DrawImage(EjemploListView.Properties.Resources.Recibida, imageRect);
  20.             }
  21.         }
  22.  
  23.         private void lvLlamadas_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
  24.         {
  25.             e.DrawDefault = true;
  26.         }

Pero me coloca la misma imagen en todos los subitems, supongo que algo haré mal al recorrer el listView
  #5 (permalink)  
Antiguo 08/08/2013, 15:37
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: imagen en listview

El evento DrawSubItem se lanza por cada subitem, no tienes que recorrer el listview entero:

Código C#:
Ver original
  1. private void lvLlamadas_DrawSubItem(object sender,
  2.     DrawListViewSubItemEventArgs e)
  3. {
  4.         //Verificas si estás en la columna de estado
  5.     if (e.Header != chEstado)
  6.     {
  7.         e.DrawDefault = true;
  8.         return;
  9.     }
  10.     else
  11.     {
  12.                 //Si el item no está seleccionado, dibujar el background por defecto
  13.         if ((e.ItemState & ListViewItemStates.Selected) == 0)
  14.         {
  15.             e.DrawBackground();
  16.         }      
  17.  
  18.                 //Dependiendo del valor del estado
  19.         switch(e.SubItem.Text)
  20.         {
  21.             case "Realizada":
  22.                 e.Graphics.DrawImage(EjemploListView.Properties.Resources.realizada, imageRect);
  23.                 break;
  24.             case "Pendiente":
  25.                 e.Graphics.DrawImage(EjemploListView.Properties.Resources.Pendiente, imageRect);
  26.                 break;
  27.             case "Recibida":
  28.                 e.Graphics.DrawImage(EjemploListView.Properties.Resources.Recibida, imageRect);
  29.                 break;
  30.         }
  31.    
  32.     }
  33.    
  34. }

Etiquetas: listview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:36.