C # listView, comment ajouter des éléments aux colonnes 2, 3 et 4, etc.?


106

Pour ajouter des éléments à la colonne 1 dans mon listViewcontrôle ( Winform) que j'utilise listView1.Items.Add, cela fonctionne bien, mais comment ajouter des éléments aux colonnes 2 et 3, etc.?


8
+1: Bonne question. cette partie du contrôle ListView est très déroutante et peu intuitive. Parfois, je pense vraiment qu'ils détestent les développeurs @ MS
Mehdi LAMRANI

1
@Mika: Il n'est pas facile de faire abstraction de la complexité d'une conception GUI robuste de l'utilisateur.
Christopher Berman

1
(Cela semblait beaucoup moins condescendant dans ma tête; désolé!)
Christopher Berman

Ajouter aux subiiems
Ramankingdom

Réponses:


134

Il y a plusieurs façons de le faire, mais voici une solution (pour 4 colonnes).

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

Et une manière plus verbeuse est ici:

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

Vous pouvez ajouter des éléments / sous-éléments à la ListView comme:

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

Mais je soupçonne que votre problème vient du type de vue . Définissez-le dans le concepteur sur Détails ou procédez comme suit dans le code:

listView1.View = View.Details;

2
Il est également très important d'utiliser "listView1.FullRowSelect = true" ... sinon seule la colonne 1 est cliquable. J'aurais aimé le savoir plus tôt! cela m'aurait économisé une tonne de travail.
John Henckel

En particulier, la remarque sur listView1.View m'a aidé! Thnx!
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

Voici la documentation msdn sur l'objet listview et l'objet 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

Je vous recommande vivement de prendre au moins le temps de parcourir la documentation sur tous les objets que vous utilisez à partir du framework .net. Bien que la documentation puisse être assez pauvre à certains moments, elle est toujours inestimable, surtout lorsque vous vous trouvez dans des situations comme celle-ci.

Mais comme James Atkinson l'a dit, il s'agit simplement d'ajouter des sous-éléments à un élément de liste comme ceci:

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

4

Pour votre problème, utilisez comme ceci:

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

0

Une ligne que j'ai faite et ça marche:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.