C # listView, come aggiungo elementi alle colonne 2, 3 e 4 ecc.?


106

Per aggiungere elementi alla colonna 1 nel mio listViewcontrol ( Winform) che sto utilizzando listView1.Items.Add, funziona bene ma come aggiungo elementi alle colonne 2 e 3, ecc.?


8
+1: bella domanda. questa parte del controllo ListView è molto confusa e poco intuitiva. A volte penso davvero che odino gli sviluppatori @ MS
Mehdi LAMRANI

1
@ Mika: Non è facile astrarre dall'utente la complessità di un robusto design della GUI.
Christopher Berman

1
(Mi sembrava molto meno paternalistico nella mia testa; scusa!)
Christopher Berman

Aggiungi a subiiems
Ramankingdom

Risposte:


134

Esistono diversi modi per farlo, ma ecco una soluzione (per 4 colonne).

string[] row1 = { "s1", "s2", "s3" };
listView1.Items.Add("Column1Text").SubItems.AddRange(row1);

E un modo più dettagliato è qui:

ListViewItem item1 = new ListViewItem("Something");
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
item1.SubItems.Add("SubItem1c");

ListViewItem item2 = new ListViewItem("Something2");
item2.SubItems.Add("SubItem2a");
item2.SubItems.Add("SubItem2b");
item2.SubItems.Add("SubItem2c");

ListViewItem item3 = new ListViewItem("Something3");
item3.SubItems.Add("SubItem3a");
item3.SubItems.Add("SubItem3b");
item3.SubItems.Add("SubItem3c");

ListView1.Items.AddRange(new ListViewItem[] {item1,item2,item3});

65

Puoi aggiungere elementi / sotto-elementi a ListView come:

ListViewItem item = new ListViewItem(new []{"1","2","3","4"});
listView1.Items.Add(item);

Ma sospetto che il tuo problema sia con il tipo di visualizzazione . Impostalo nella finestra di progettazione su Dettagli o esegui le seguenti operazioni nel codice:

listView1.View = View.Details;

2
È molto importante anche utilizzare "listView1.FullRowSelect = true" ... altrimenti solo la colonna 1 è cliccabile. Vorrei averlo saputo prima! mi avrebbe risparmiato un sacco di lavoro.
John Henckel

Soprattutto il commento su listView1.View mi ha aiutato! Thnx!
Dev.Jaap

7
 private void MainTimesheetForm_Load(object sender, EventArgs e)
        {
            ListViewItem newList = new ListViewItem("1");
            newList.SubItems.Add("2");
            newList.SubItems.Add(DateTime.Now.ToLongTimeString());
            newList.SubItems.Add("3");
            newList.SubItems.Add("4");
            newList.SubItems.Add("5");
            newList.SubItems.Add("6");
            listViewTimeSheet.Items.Add(newList);

        }

7

Ecco la documentazione di msdn sull'oggetto listview e sull'oggetto listviewItem.
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.aspx

Consiglio vivamente di dedicare almeno del tempo a sfogliare la documentazione su tutti gli oggetti che usi dal framework .net. Sebbene la documentazione possa essere piuttosto scarsa a volte, è comunque inestimabile soprattutto quando ti imbatti in situazioni come questa.

Ma come ha detto James Atkinson, si tratta semplicemente di aggiungere elementi secondari a un elemento listview in questo modo:

ListViewItem i = new ListViewItem("column1");
i.SubItems.Add("column2");
i.SubItems.Add("column3");

4

Per il tuo problema usa in questo modo:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);

0

Una linea che ho creato e funziona:

listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = randomArray["maintext"], SubItems = { randomArray["columntext2"], randomArray["columntext3"] } });

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.