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?

Kiquenet
quelle
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});
Inisheer
quelle
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;
bruno conde
quelle
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);

        }
ken4ward
quelle
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");
CalvinR
quelle
4

Verwenden Sie für Ihr Problem Folgendes:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);
OneM
quelle
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"] } });
David Rodrigues
quelle
-2

ListViewSubItem verwenden - Siehe: MSDN

Jan Bannister
quelle