2012-07-14 18 views
7

En relación con la migración de Listbox a ListView.Rellenar una lista de varias columnas

Hola.

Tengo un cuadro de lista añado entradas como esta para:

1; contenido

Donde 1 es siempre un int y el contenido es siempre una cadena. Puedo acceder a cada uno por separado.

Ahora quiero el resultado a clasificar descender, es decir:

1;content 
4;content2 
2;content3 

=>

4;content2 
2;content3 
1;content 

Como esto no se ve bien, quiero usar un Listview lugar. De esta manera:

Frequency | Content 
=============== 
4 | content2 
2 | content3 
1 | content 

El problema es que la propiedad de tabla no parece existir, todas las entradas se están poniendo en como símbolos en una vista de lista en el explorador. También tengo problemas para "llegar" a la segunda columna (contenido), es decir, solo veo 4,2,1.

¿Cómo prepararía y poblaría una vista de lista en C# .net 4 para eso?

Respuesta

30

Para establecer el ListView en modo de detalles:

 listView1.View = View.Details; 

continuación para configurar las dos columnas:

 listView1.Columns.Add("Frequency"); 
     listView1.Columns.Add("Content"); 

A continuación, añadir sus artículos:

 listView1.Items.Add(new ListViewItem(new string[]{"1", "content"})); 
     listView1.Items.Add(new ListViewItem(new string[]{"4", "content2"})); 
     listView1.Items.Add(new ListViewItem(new string[]{"2", "content3"})); 

Elegí usar la sobrecarga del constructor ListViewItem que toma una matriz de cadenas que representa los valores de columna. ¡Pero hay 22 sobrecargas! Mire a través de eso y encuentre el que mejor se adapte a su situación.

Para establecer la clasificación automática de los objetos:

 listView1.Sorting = SortOrder.Descending; 
+0

Gracias tanto! ¡Esta es la ÚNICA respuesta que he encontrado que realmente tiene sentido! Exactamente lo que necesitaba.(Estoy completando una vista de lista de un XML) Eres un héroe para mí ahora. Tomar mi voto :) – NoobishPro

+1

También para formatear puedes usar 'listView1.GridLines = true;', alineación 'listView1.Columns [0] .TextAlign = HorizontalAlignment.Center;'. Para los anchos de columna, consulte aquí: http://stackoverflow.com/questions/1257500/c-sharp-listview-column-width-auto#16955210. – SharpC

+0

Funciona como un encanto, finalmente encontró la respuesta después de tanto tiempo jaja, gracias hombre ♥ –

0

Classic use us ListView GridView. El GridView es lo que agrega las columnas.

GridView

1

Soy consciente de que este post es más de un año de edad, pero pensé que esto puede ser de utilidad, que escribí hace un artículo años sobre el uso de un ListView como una de varias columnas ListBox, que incluye el código para poblarlo. El artículo está disponible aquí (Using a ListView as a multicolumn ListBox) está escrito usando VB.NET pero el código es prácticamente el mismo para C#, puedo reescribirlo usando C# y agregaré un enlace para eso, pero será en otro momento.

Espero que esto ayude, si no se siente libre de dejarme saber :)

0

Para añadir las cabeceras de vista de lista y añadir elementos a la lista Ver, probar este código:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Lstv1.Columns.Add("Paramname", CInt(Lstv1.Width/2)) 
     Lstv1.Columns.Add("Paramorder", CInt(Lstv1.Width/2)) 
    End Sub 


Private Sub appendlistview(ByVal Paramname As String, ByVal Paramorder As String) 

    Dim newitem As New ListViewItem(Paramname) 
    newitem.SubItems.Add(Paramorder) 

    Lstv1.Items.Add(newitem) 

End Sub 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click 

    Call appendlistview(TextBox1.Text, TextBox2.Text) 
End Sub 
+0

Esto está etiquetado C# aunque, no VB. – Nyerguds

Cuestiones relacionadas