C # listView, ¿cómo agrego elementos a las columnas 2, 3 y 4, etc.?


106

Para agregar elementos a la columna 1 en mi listViewcontrol ( Winform) que estoy usando listView1.Items.Add, esto funciona bien, pero ¿cómo agrego elementos a las columnas 2 y 3, etc.?


8
+1: Buena pregunta. esta parte del control ListView es muy confusa y poco intuitiva. A veces realmente creo que odian a los desarrolladores @ MS
Mehdi LAMRANI

1
@Mika: No es fácil abstraer del usuario la complejidad del diseño robusto de la GUI.
Christopher Berman

1
(Eso sonó mucho menos condescendiente en mi cabeza; ¡lo siento!)
Christopher Berman

Añadir a subiiems
Ramankingdom

Respuestas:


134

Hay varias formas de hacerlo, pero aquí hay una solución (para 4 columnas).

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

Y una forma más detallada está aquí:

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

Puede agregar elementos / subelementos a ListView como:

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

Pero sospecho que su problema está en el tipo de vista . Configúrelo en el diseñador en Detalles o haga lo siguiente en el código:

listView1.View = View.Details;

2
También es muy importante utilizar "listView1.FullRowSelect = true" ... de lo contrario, solo se puede hacer clic en la columna 1. ¡Ojalá hubiera sabido esto antes! me hubiera ahorrado un montón de trabajo.
John Henckel

¡Especialmente el comentario sobre listView1.View me ayudó! 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

Aquí está la documentación de msdn sobre el objeto listview y el objeto 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

Le recomiendo encarecidamente que al menos se tome el tiempo para leer la documentación sobre cualquier objeto que use del marco .net. Si bien la documentación puede ser bastante pobre en algunos momentos, sigue siendo invaluable, especialmente cuando se encuentra en situaciones como esta.

Pero como dijo James Atkinson, es simplemente una cuestión de agregar subelementos a un elemento de vista de lista así:

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

4

Para su problema, use así:

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

0

Una línea que hice y funciona:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.