2012-07-14 10 views
7

Per quanto riguarda la migrazione da Listbox a ListView.Compilazione di una lista multi-colonna

Ciao.

Ho una casella di riepilogo aggiungo voci come questo per:

1; contenuto

dove 1 è sempre un int e il contenuto è sempre una stringa. Posso accedere a ciascuno separatamente.

Ora voglio il risultato da ordinare in modo discendente, vale a dire:

1;content 
4;content2 
2;content3 

=>

4;content2 
2;content3 
1;content 

Dato che questo non è buona, io voglio usare un Listview invece. Come questo:

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

Il problema è che la proprietà tabellare non sembra esistere, tutte le voci sono state messe a come simboli in una lista in Esplora risorse. Inoltre ho problemi a "raggiungere" la 2a colonna (contenuto), cioè vedo solo 4,2,1.

Come preparerei e popolare un listview in C# .net 4 per quello?

risposta

30

Per impostare la ListView in modalità Dettagli:

 listView1.View = View.Details; 

Poi impostare il vostro due colonne:

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

Quindi per aggiungere i tuoi articoli:

 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"})); 

Ho scelto di utilizzare l'overload del costruttore ListViewItem che accetta un array di stringhe che rappresenta i valori delle colonne. Ma ci sono 22 sovraccarichi! Guarda attraverso e trova quello che si adatta meglio alla tua situazione.

Per impostare l'ordinamento automatico di oggetti:

 listView1.Sorting = SortOrder.Descending; 
+0

Grazie mille! Questa è l'UNICA risposta che ho trovato che in realtà ha molto senso! Esattamente quello di cui avevo bisogno.(Sto compilando un listview da un XML) Sei un eroe per me ora. Prendi il mio upvote :) – NoobishPro

+1

Anche per la formattazione puoi usare 'listView1.GridLines = true;', alignment 'listView1.Columns [0] .TextAlign = HorizontalAlignment.Center;'. Per le larghezze delle colonne, consultare qui: http://stackoverflow.com/questions/1257500/c-sharp-listview-column-width-auto#16955210. – SharpC

+0

Funziona come un incantesimo, finalmente ha trovato la risposta dopo tanto tempo haha, grazie uomo ♥ –

0

Classico usaci ListView GridView. Il GridView è ciò che aggiunge le colonne.

GridView

1

mi rendo conto che questo post è più di un anno, ma ho pensato che questo può essere utile, ho scritto un articolo di anni fa su come utilizzare una ListView come più colonne ListBox, che include il codice per popolarlo. L'articolo è disponibile qui (Using a ListView as a multicolumn ListBox) è scritto usando VB.NET ma il codice è praticamente lo stesso per C#, potrei riscriverlo usando C# e aggiungerò un collegamento per questo ma sarà un'altra volta.

Spero che questo aiuti, se non esitate a farmi sapere :)

0

Per aggiungere le intestazioni lista visualizzare e aggiungere elementi alla visualizzazione di elenco, provate questo codice:

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

Questo è taggato però # non, VB. – Nyerguds

Problemi correlati