C# listView, cum pot adăuga elemente la coloanele 2, 3 și 4 etc.? (Programare, C#, Winforms, Listview)

Steve a intrebat.

Pentru a adăuga elemente la coloana 1 în lista mea listView control (Winform) folosesc listView1.Items.Add, acest lucru funcționează bine, dar cum pot adăuga elemente la coloanele 2 și 3 etc.?

Comentarii

  • +1 : Bună întrebare. această parte a controlului ListView este foarte confuză și neintuitivă. Uneori chiar cred că îi urăsc pe dezvoltatorii @ MS –  > Por Mehdi LAMRANI.
  • @Mika: Nu este ușor să faci abstracție de complexitatea unui design robust al interfeței grafice de utilizator. –  > Por Christopher Berman.
  • (Asta a sunat mult mai puțin condescendent în capul meu; scuze!) – –  > Por Christopher Berman.
  • Adăugați la subiiems –  > Por Ramankingdom.
7 răspunsuri
Inisheer

Există mai multe moduri de a face acest lucru, dar aici este o soluție (pentru 4 coloane).

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

Iar o modalitate mai verosimilă este aici:

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

Comentarii

  • în cazul meu, am adăugat un subitem, dar totuși, nu apare nimic, apoi am înțeles că trebuie să adaug un antet suplimentar la vizualizarea listei -> ColumnHeader header header2 = new ColumnHeader { Text = „Column2”, Name = „col2” }; listView.Columns.Add(header2); -> Columns.Columns.Add(header2); –  > Por Aleksey Timoshchenko.
bruno conde

Puteți adăuga elemente / subposturi la ListView ca:

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

Dar bănuiesc că problema dvs. este cu Tipul de vizualizare. Setați-l în designer la Details sau faceți următoarele în cod:

listView1.View = View.Details;

Comentarii

  • De asemenea, este foarte important să folosiți „listView1.FullRowSelect = true”… altfel doar coloana 1 poate fi accesată. Aș fi vrut să știu acest lucru mai devreme! m-ar fi scutit de o tonă de muncă. –  > Por John Henckel.
  • În special observația despre listView1.View m-a ajutat! Mulțumesc! –  > Por Dev.Jaap.
ken4ward
 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);

        }

CalvinR

Aici este documentația msdn despre obiectul listview și obiectul 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

V-aș recomanda cu tărie să vă faceți măcar timp să parcurgeți documentația pentru orice obiect pe care îl utilizați din cadrul .net. Deși documentația poate fi destul de slabă în unele momente, este totuși de neprețuit, mai ales atunci când vă confruntați cu situații ca aceasta.

Dar, așa cum a spus James Atkinson, este pur și simplu o chestiune de a adăuga subitemi la un element listviewitem, astfel:

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

OneM

Pentru problema dvs. folosiți astfel:

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

David Rodrigues

O linie pe care am făcut-o și funcționează:

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

Comentarii

  • Codul nu funcționează… Error CS0200 Property or indexer 'ListViewItem.SubItems' cannot be assigned to -- it is read only –  > Por Zachafer.
Jan Bannister

Utilizați ListViewSubItem – Vedeți: MSDN