C # listView, jak dodać elementy do kolumn 2, 3 i 4 itd.?


106

Aby dodać elementy do kolumny 1 w kontrolce listView( Winform), której używam listView1.Items.Add, działa to dobrze, ale jak dodać elementy do kolumn 2 i 3 itp.?


8
+1: Dobre pytanie. ta część kontrolki ListView jest bardzo zagmatwana i nieintuicyjna. Czasami naprawdę myślę, że nienawidzą programistów @ MS
Mehdi LAMRANI

1
@Mika: Nie jest łatwo odciąć użytkownika od złożoności solidnego projektu GUI.
Christopher Berman,

1
(To brzmiało w mojej głowie o wiele mniej protekcjonalnie; przepraszam!)
Christopher Berman

Dodaj do subiiems
Ramankingdom

Odpowiedzi:


134

Można to zrobić na kilka sposobów, ale tutaj jest jedno rozwiązanie (na 4 kolumny).

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

Bardziej szczegółowy sposób jest tutaj:

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

Możesz dodawać elementy / elementy podrzędne do ListView, takie jak:

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

Ale podejrzewam, że problem dotyczy typu widoku . Ustaw go w projektancie na Szczegóły lub wykonaj następujące czynności w kodzie:

listView1.View = View.Details;

2
Bardzo ważne jest również użycie „listView1.FullRowSelect = true” ... w przeciwnym razie tylko kolumna 1 jest klikalna. Żałuję, że nie wiedziałem o tym wcześniej! zaoszczędziłoby mi to mnóstwo pracy.
John Henckel

Szczególnie pomogła mi uwaga o listView1.View! Dzięki!
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

Oto dokumentacja msdn dotycząca obiektu listview i obiektu 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

Gorąco polecam przynajmniej poświęcić trochę czasu na przejrzenie dokumentacji wszystkich obiektów, których używasz z frameworka .net. Chociaż dokumentacja może być czasami dość uboga, nadal jest nieoceniona, zwłaszcza gdy napotkasz takie sytuacje.

Ale jak powiedział James Atkinson, jest to po prostu kwestia dodania elementów podrzędnych do elementu widoku listy w następujący sposób:

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

4

W przypadku problemu użyj w ten sposób:

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

0

Jedna linia, którą stworzyłem i działa:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.