 VB.NET - O 
Controle ListView revisitado
 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 :
large icon
small icon
list
detail
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: 
 | ||||||||||
| Alignment | ListViewAlignment | Read/write. Define o alinhamento dos itens na lista. Valores Válidos: 
 | ||||||||||
| 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