Criar colunas na lista e adicionar itens

Estou a aprender a usar o listView num windowsForm e tenho alguns problemas que espero resolver aqui. A primeira coisa é quando estou a criar as colunas. com o código abaixo:

private void initListView()
    {
        // Add columns
        lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
    }

Quando eu executar o programa, o nome das colunas não são visíveis, eles estão todos no canto esquerdo, e eu tenho a "arrastar" para ser capaz de ler o texto. O que fiz de errado?

E finalmente pergunto-me como é que adiciono itens às colunas. Primeiro crio um objecto tipo

ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");

cada listViewItem objecta uma coluna ou uma linha? Como é que adiciono linhas de informação? Preciate some help! Obrigado!

Author: RenniePet, 2012-07-03

4 answers

O teu primeiro problema é que estás a passar -3 para o segundo parâmetro das colunas.Adicionar. Tem de ser -2 para auto-dimensionar a coluna. Fonte: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx (Veja os comentários no exemplo do código no fundo)

private void initListView()
{
    // Add columns
    lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}

Você também pode usar a outra sobrecarga, adicionar (string). E. g:

lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");

Referência para mais sobrecargas: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx

Em segundo lugar, para adicionar itens à lista, terá de criar instâncias da ListViewItem e adicioná-las à colecção de itens da listView. Você vai precisar usar a string [] construtor.

var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);

Também pode guardar objectos na propriedade da marca do item.

item2.Tag = person;
E depois podes extraí-lo.
var person = item2.Tag as Person;
Avisa-me se tiveres alguma pergunta e espero que isto ajuda!
 35
Author: Tom, 2012-07-03 13:10:01
Não vi ninguém responder correctamente. Então, vou postá-lo aqui. Para obter colunas para aparecer, você precisa especificar a seguinte linha.
lvRegAnimals.View = View.Details;

E depois adicione as suas colunas.

lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
Espero que isto ajude mais alguém à procura desta resposta no futuro.
 27
Author: IamBatman, 2014-12-10 22:25:42

Tem de definir a propriedade para o controlo:

listView1.View = View.Details;
 5
Author: Navin Pandit, 2016-03-15 12:34:44
            listView1.View = View.Details;
        listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
        listView1.Columns.Add("   Range   ", 100, HorizontalAlignment.Center);
        listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);     
Também tive o mesmo problema .. arrastei a coluna para a esquerda .. mas agora está bem .. digamos que tenho 283 * 196 Tamanho de listview ..... Declaramos na coluna largura-2 para largura automática .. Para se encaixar na listview, podemos dividir a largura da listview em 3 partes (83.100.100) ...
 0
Author: U Zay Yar, 2016-08-31 07:32:30