C # listView, wie füge ich Elemente zu den Spalten 2, 3 und 4 usw. hinzu?


106

Um Elemente zu Spalte 1 in meinem listViewSteuerelement ( Winform) hinzuzufügen, das ich verwende listView1.Items.Add, funktioniert dies einwandfrei, aber wie füge ich Elemente zu Spalten 2 und 3 usw. hinzu?


8
+1: Gute Frage. Dieser Teil des ListView-Steuerelements ist sehr verwirrend und nicht intuitiv. Manchmal denke ich wirklich, dass sie Entwickler @ MS
Mehdi LAMRANI

1
@Mika: Es ist nicht einfach, die Komplexität des robusten GUI-Designs vom Benutzer zu abstrahieren.
Christopher Berman

1
(Das klang in meinem Kopf viel weniger bevormundend; sorry!)
Christopher Berman

Zu subiiems hinzufügen
Ramankingdom

Antworten:


134

Es gibt verschiedene Möglichkeiten, aber hier ist eine Lösung (für 4 Spalten).

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

Und ein ausführlicherer Weg ist hier:

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

Sie können hinzufügen Artikel / Unterelemente wie zum Listview:

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

Ich vermute jedoch, dass Ihr Problem beim Ansichtstyp liegt . Setzen Sie es im Designer auf Details oder gehen Sie im Code wie folgt vor:

listView1.View = View.Details;

2
Es ist sehr wichtig, auch "listView1.FullRowSelect = true" zu verwenden ... andernfalls kann nur Spalte 1 angeklickt werden. Ich wünschte, ich hätte das früher gewusst! es hätte mir eine Menge Arbeit erspart.
John Henckel

Besonders die Bemerkung zu listView1.View hat mir geholfen! Danke!
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

Hier ist die msdn-Dokumentation zum Listview-Objekt und zum ListviewItem-Objekt.
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.aspx

Ich würde Ihnen dringend empfehlen, sich zumindest die Zeit zu nehmen, um die Dokumentation aller Objekte, die Sie aus dem .net-Framework verwenden, zu überfliegen. Obwohl die Dokumentation manchmal ziemlich schlecht sein kann, ist sie immer noch von unschätzbarem Wert, insbesondere wenn Sie auf solche Situationen stoßen.

Aber wie James Atkinson sagte, geht es einfach darum, einem Listenansichtselement Unterelemente wie folgt hinzuzufügen:

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

4

Verwenden Sie für Ihr Problem Folgendes:

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

0

Eine Zeile, die ich gemacht habe und die funktioniert:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.