2010-12-10 28 views
8

En VS2005, utilizando C#, tengo una aplicación Forms con un ListView. Puedo agregar elementos a la vista de lista muy bien. Sin embargo, tan pronto como intento ordenar esos elementos en grupos, no aparecen. Sé que los grupos no aparecen cuando están vacíos, pero he confirmado que estos grupos están no vacíos. Además, I am configuración list list.ShowGroups = true. Si agrego elementos a uno de los grupos, pero no el segundo, aparece el grupo "Predeterminado" ... ¡son solo los grupos que agregué que no aparecen!C# ListView aparece en blanco con los grupos

Aquí está el código que estoy usando:

this.listView.View = View.Details; 
this.listView.Columns.Add("Column1"); 
this.listView.Columns[0].Width = this.listView.Width - 20; 
this.listView.HeaderStyle = ColumnHeaderStyle.None; 
this.listView.Groups.Add(new ListViewGroup("A")); 
this.listView.Groups.Add(new ListViewGroup("D")); 


foreach(item i in Class.Items) 
{ 
    if (i.Type == Type.A) 
     this.listView.Groups[0].Items.Add(i.Name); 
    else 
     this.listView.Groups[1].Items.Add(i.Name); 
} 
this.listView.ShowGroups = true; 

¿Alguien tiene alguna idea de por qué mis grupos no aparecen? Aquí hay una captura de pantalla de lo que estoy viendo:

alt text

+3

+1 para la captura de pantalla humorística. –

Respuesta

11

No debe agregar elementos al grupo, pero los artículos en lugar añadiendo a la vista de lista, y para cada elemento de establecer su propiedad Group al grupo deseado .

Se puede ver un ejemplo en este MSDN link

+0

Eso lo hizo. Huh, intuitivamente no se siente como una forma natural de hacerlo, pero ... aparentemente era lo que tenía sentido para MSFT en ese momento. ¡Gracias! – JToland

+3

@JToland: Supongo que una posible razón es que puede mover elementos fácilmente de un grupo a otro en tiempo de ejecución sin tener que volver a crear el elemento. Pero lo más probable es que también esté relacionado con el hecho de que los grupos no se muestran en versiones de Windows anteriores a XP, por lo que los elementos deben ser propiedad de 'ListView' para que se muestren en ese entorno. –

+2

@Cody: Sí, probablemente tienes razón. De todos modos, estoy de acuerdo con JToland que no es realmente intuitivo: D – digEmAll

5

Si los artículos se añaden a la vista de lista, mientras que el valor ShowGroups se establece en false y la propiedad ShowGroups está más adelante establece en true, el cuadro de lista aparecerá blanco mientras que muestran grupos (pero con contenido cuando ShowGroups es falso).

ShowGroups tiene que ser cierto al crear la lista.

El tiempo también es importante. El cuadro de lista debe procesarse antes de que la propiedad ShowGroups se establezca en falso. Lo configuré en el cuadro de diálogo que mostraba el evento.

Descubrí esto mientras trabajaba en .Net 4.0.

Cuestiones relacionadas