C # listView, como adiciono itens às colunas 2, 3 e 4, etc?


106

Para adicionar itens à coluna 1 em meu listViewcontrol ( Winform) que estou usando listView1.Items.Add, isso funciona bem, mas como adiciono itens às colunas 2 e 3 etc?


8
+1: Boa pergunta. esta parte do controle ListView é muito confusa e pouco intuitiva. Às vezes eu realmente acho que eles odeiam desenvolvedores @ MS
Mehdi LAMRANI

1
@Mika: Não é fácil abstrair do usuário a complexidade do design robusto da GUI.
Christopher Berman

1
(Isso soou bem menos condescendente na minha cabeça; desculpe!)
Christopher Berman

Adicionar aos subiiems
Ramankingdom

Respostas:


134

Existem várias maneiras de fazer isso, mas aqui está uma solução (para 4 colunas).

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

E uma forma mais detalhada está aqui:

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

Você pode adicionar itens / subitens ao ListView como:

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

Mas eu suspeito que seu problema seja com o tipo de visualização . Defina-o no designer como Detalhes ou faça o seguinte no código:

listView1.View = View.Details;

2
É muito importante também usar "listView1.FullRowSelect = true" ... caso contrário, apenas a coluna 1 é clicável. Eu gostaria de ter sabido disso antes! isso teria me poupado uma tonelada de trabalho.
John Henckel

Principalmente o comentário sobre listView1.View me ajudou! 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

Aqui está a documentação do msdn sobre o objeto listview e o 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

Eu recomendo fortemente que você pelo menos reserve um tempo para folhear a documentação sobre quaisquer objetos que você usa da estrutura .net. Embora a documentação possa ser muito pobre em alguns momentos, ainda é inestimável, especialmente quando você se depara com situações como esta.

Mas, como disse James Atkinson, é simplesmente uma questão de adicionar subitens a um item de exibição de lista, assim:

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

4

Para o seu problema, use assim:

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

0

Uma linha que fiz e funciona:

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.