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

Per aggiungere elementi alla colonna 1 nel mio controllo listView ( Winform ) Sto usando listView1.Items.Add , questo funziona bene, ma come faccio ad aggiungere elementi alle colonne 2 e 3, ecc?

Ci sono diversi modi per farlo, ma qui c’è una soluzione (per 4 colonne).

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

E un modo più verboso è 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}); 

Puoi aggiungere oggetti / sotto-voci 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 vista . Impostalo nel designer su Dettagli o fai quanto segue nel codice:

 listView1.View = View.Details; 
  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); } 

Ecco la documentazione di msdn sull’object listview e l’object 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

Ti consiglio caldamente di dedicare il tempo a leggere la documentazione su qualsiasi object che usi dal framework .net. Mentre la documentazione può essere piuttosto scadente in alcuni momentjs è ancora inestimabile, specialmente quando ti imbatti in situazioni come questa.

Ma come ha detto James Atkinson si tratta semplicemente di aggiungere sottotemi ad un listviewitem in questo modo:

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

Per il tuo problema usalo in questo modo:

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

Una linea che ho realizzato e funziona:

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

Usa ListViewSubItem – Vedi: MSDN