VB.NET - O Controle ListView revisitado


No mundo atual uma das características marcantes é o acesso a informação. Nunca houve tanta informação disponível para tantos. Você nem precisa sair de casa para ter acesso a toneladas de informações sobre um determinado assunto. Basta Clicar.

O efeito colateral de tamanha quantidade de informação é um paradoxo: O que fazer com tanta informação ? Como tratá-la , como organizá-la, como digerí-la...?

Como base nisto o homem tem criado diversas ferramentas para poder processar a informação. Acredite se quiser. mas o controle ListView é um destes recursos criados com o objetivo de organizar a informação no formato de um a lista.

Uma lista é algo linear sem ramificações ou níveis. Uma lista pode conter todos os objetos em um grupo ou sub-grupo ordenados segundo um critério. Pode usar também uma organização hierárquica do tipo pai/filho onde cada objeto ocupa um nível específico nesta hierarquia e cada objeto pode ter um objeto pai, um objeto filho , nenhum ou ambos.

Um controle ListView exibe uma lista de itens com ícones opcionais e subitens associados com cada um. Como exemplo clássico temos o Windows Explorer que usa este tipo de recurso para organizar informação sobre arquivos, onde o ListView ocuparia o lado direito da janela e exibiria os arquivos e diretórios contidos no interior de cada diretório atual selecionado selecionado na visão de árvore do lado esquerdo da janela.

 

O controle ListView contém uma coleção de objetos do tipo ListViewItem : A propriedade Items.

A propriedade Items é do tipo ListViewItemCollection, que possui métodos para incluir, inserir, remover e outras manipulações de itens na coleção.

A classe ListViewItemCollection implementa a interface ICollection , a interface IList que deriva dela , e a interface IEnumerable.

As primeiras duas interfaces fornecem acesso a items individuais via índice (o primeiro tem o valor igual a 0), a última fornece a capacidade de interagir sobre a coleção. Estas características são o cerne do controle ListView.

A exibição do controle ListView pode ser feita de 4 formas distintas definidas pela propriedade View do controle, são elas :

Quando a propriedade View é definida para SmallIcon ou List, a imagem exibida com cada item é obtida de um controle ImageList definido pela propriedade SmallImageList.

Quando a propriedade View é definida para LargeIcon as imagens são obtidas de um ImageList definido pela propriedade LargeImageList.

A imagem padrão para um ImageList é small Images exibidas com 16 x 16 pixels. Imagens maiores são exibidas a partir de 32 x 32.

A seguir temos as principais propriedades do controle ListView :

Propriedade

Valor

Descrição

Activation

ItemActivation

Read/write. Define como o usuário ativa um item. Os valores válidos estão contidos na enumeração a seguir:

OneClick

Usuário da um Click para ativar o item.

Standard

Usuário clica duas vezes para ativar um item.

TwoClick

Usuário clica duas vezes para ativar um item.(Com duração variável entre eles.)

Alignment

ListViewAlignment

Read/write. Define o alinhamento dos itens na lista. Valores Válidos:

Valor

Descrição

Default

O items permanece onde colocado pelo mouse.

Left

O items são alinhados a esquerda.

SnapToGrid

Items alinhados para grade invisível qdo movidos pelo usuário.

Top

O items são alinhados no topo

AllowColumnReorder

Boolean

Read/write.  Se false  (o padrão),o re-ordenamento drag-and-drop da coluna em tempo de execução não é permitido.

AutoArrange

Boolean

Read/write. Se true (o padrão), os ícones são automaticamente arrumados e ajustados ao grid.

BorderStyle

BorderStyle

Read/write. Define o estilo de borda do controle. O padrão BorderStyle.Fixed3D.

CheckBoxes

Boolean

Read/write. Se true, um checkbox aparece perto do próximo item.

CheckedIndices

ListView.CheckedIndexCollection

Read-only. Coleção de indices dos itens atualmente marcados.

CheckedItems

ListView.CheckedListViewItemCollection

Read-only. Coleção dos itens atualmente marcados.

Columns

ListView.ColumnHeaderCollection

Read-only. Coleção de objetos ColumnHeader objects, cada um representa a coluna do cabeçalho quando a propriedade View é definida como Details.

FocusedItem

ListViewItem

Read-only. O item que atualmente possui o foco.

ForeColor

Color

Read/write. Cor de fundo do controle.

FullRowSelect

Boolean

Read/write. Se true, clicando em um item seleciona todos os seus subitens.

GridLines

Boolean

Read/write. Se true, as linhas da grade são exibidas contornando itens e sub-itens. O padrão é false.

Items

ListView.ListViewItemCollection

Read-only. A coleção de itens no controle.

LabelEdit

Boolean

Read/write. Se true, usuário pode editar a etiqueta do item.O padrão é false.

LargeImageList

ImageList

Read/write. A ImageList usada quando a propriedade View é definida para View.LargeIcon.

ListViewItemSorter

IComparer

Read/write. O objeto IComparer usado para realizar ordenamento de items.

MultiSelect

Boolean

Read/write. Se true (o padrão), podemos selecionar múltiplos items.

Scrollable

Boolean

Read/write. Se true (o padrão), scrollbars são incluídas no controle qdo necessário.

SelectedIndices

ListView.SelectedIndexCollection

Read-only. Uma coleção de índices para os items selecionados.

SelectedItems

ListView.SelectedListViewItemCollection

Read-only. Uma coleção de itens selecionados.

SmallImageList

ImageList

Read/write. A ImageList usada quando a propriedade View é definida para  View.SmallIcon.

Sorting

SortOrder

Read/write. O tipo de ordenamento dos itens. Valores válidos: Ascending, Descending, ou None (o padrão).

Text

String

Read/write. O texto exibido com um item no controle.

TopItem

ListViewItem

Read-only. O primeiro item visível no controle.

View

View

Read/write. Define como os itens são exibidos no controle.

a Seguir os principais eventos do controle ListView:

Evento

Descrição

ColumnClick

Disparado quando o usuário clica na coluna Header e a propriedade View esta definida como View.Details.

AfterLabelEdit

Disparado depois da etiqueta do  ListViewItem ter sido editada.

BeforeLabelEdit

Disparado antes da etiqueta do ListViewItem estiver sendo editada.

ItemActivate

Disparada quando um item é ativado.

ItemCheck

Disparado quando o estado check de um item é alterado.

ItemDrag

Disparado quando o usuário inicia a seleção e o arraste de um item.

SelectedIndexChanged

Se a propriedade MultiSelect for igual a false, este evento é disparado quando existe uma alteração no indice de um item selecionado. Se a propriedade for true o evento é disparado quando um item for selecionado ou deselecionado.

Nota: Cuidado com o evento SelectedIndexChanged. Ele pode ser disparado duas vezes ao se selecionar um item:  a primeira vez quando o item é deselecionado e quando o nova seleção é realizada. Para evitar este evento indesejável, verifique a propriedade SelectedIndices.Count  do ListView no tratamento do evento e efetue o processamento desejado somente quando o valor retornado for diferente de zero. Com isto não haverá o processamento quando o item for deselecionado. Exemplo:

Private Sub listView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    If listView1.SelectedIndices.Count <> 0 Then
      'efetua o processamento
     
    End If
End Sub

 

Outra nota importante é que se a propriedade CheckBoxes for definida como true, múltiplos itens podem ser selecionados mesmo se a propriedade MutiSelect estiver definida como False.

 A seguir os principais métodos do Controle ListView:

Método

Descrição

ArrangeIcons

Arrumam os ícones usando o alinhamento padrão ou um definido pelo usuário.

BeginUpdate

Previne o controle de ser redesenhado até que o método EndUpDate seja chamado. Isto aumenta o desempenho e previne o efeito piscante quando se inclui muitos itens usando o método Add.

Clear

Remove todos os itens e colunas do controle

EnsureVisible

Certifica que um item com um índice definido esta visível no controle.

EndUpdate

Permite ao controle ser redesenhado depois do método BeginUpdate tiver sido chamado.

EnsureVisible

Torna possível que um item com indice (0) seja visível.

GetItemAt

Obtêm o item em um ponto especificado pelas coordenadas x e y.

Sort

Ordena os itens usando o IComparer definido na propriedade ListViewItemSorter.

Já mostrei a utilização do controle ListView no VB.NET nos seguintes artigos:

Já falei tanto que até estou sem assunto !!!  Amanha eu coloco um exemplo , OK !!!

Exemplo de utilização de ListView (mais um...) Clique no link abaixo para ver o exemplo:(Resolvi colocar o exemplo em outra página para ficar mais fácil localizar o assunto.)

Exemplo : Usando ListView para exibir dados selecionados em duas Combobox sincronizadas

Até o próximo artigo ... 


José Carlos Macoratti