SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Jeysscarr en Viernes 9 de Abril de 2010, 21:52

Título: Listview Vista Reporte Personalizada
Publicado por: Jeysscarr en Viernes 9 de Abril de 2010, 21:52
Hola... pues es algo realmente sencillo pero creo que es útil para quien usa el listview tal cual como microsoft lo trajo al mundo

me cree una clase que hereda del listview pero he agregado dos caracteristicas:
1. Tiene la posibilidad de determinar el indice de la columna "principal" del listview..es decir, la columna que se adaptará al tamaño del list al este cambiar de tamaño sin afectar el tamaño de las demás. (Por defecto es -1 es decir ninguna columna)
2. Colorea  las filas con dos tonos predeterminados o con los que el usuario determine (en este caso.. White y Gainsboro), el primero para las filas impares y el segundo obviamente para los multiplos de 2 tal como en los gridview, esto es aparte del fondo.... se hace a traves del método "Colorear", usted carga los datos en su listview y al final.. pone.. Listview.Colorear();

Dejo un adjunto como ejemplo de como se ve cuando uno lo configura...

sin más aqui está el código:
Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using System.Drawing;
  8.  
  9. namespace ControlesJey
  10. {
  11.     class MiListView:ListView
  12.     {
  13.         public MiListView()
  14.         {
  15.             this.View = View.Details;
  16.             this.GridLines = true;
  17.             this.FullRowSelect = true;
  18.             this.HideSelection = false;
  19.         }
  20.  
  21.         int colp=-1;
  22.         public int IndiceColumnaPrimaria
  23.         {
  24.             get{return colp;}
  25.             set{colp=value;}
  26.         }
  27.  
  28.         Color c1=Color.White;
  29.         public Color ColorFilasImpares
  30.         {
  31.             get { return c1; }
  32.             set { c1 = value; }
  33.         }
  34.  
  35.         Color c2=Color.Gainsboro;
  36.         public Color ColorFilasPares
  37.         {
  38.             get { return c2; }
  39.             set { c2 = value; }
  40.         }
  41.  
  42.  
  43.         protected override void OnResize(EventArgs e)
  44.         {
  45.             base.OnResize(e);
  46.             if ((this.Columns.Count > 0)&&(colp!=-1))
  47.             {
  48.                 int anchoCol=0;
  49.                 for (int i = 0; i <= this.Columns.Count - 1; i++)
  50.                 {
  51.                     if (i != colp)
  52.                     {
  53.                         anchoCol += this.Columns[i].Width;
  54.                     }
  55.                 }
  56.                 anchoCol = (this.Width - anchoCol) - 22;
  57.                 this.Columns[colp].Width = anchoCol;
  58.             }
  59.            
  60.         }
  61.  
  62.         public void Colorear()
  63.         {
  64.             int cont = 1;
  65.             foreach (ListViewItem it in this.Items)
  66.             {
  67.                
  68.                 if (cont % 2 == 0)
  69.                 {
  70.                     it.BackColor = c2;
  71.                 }
  72.                 else
  73.                 {
  74.                     it.BackColor = c1;
  75.                 }
  76.                 cont++;
  77.             }
  78.         }
  79.        
  80.     }
  81. }
  82.  
  83.  
  84.