OCULTAR COLUNAS DE UMA LISTVIEW

LNACER 26/10/2013 19:12:16
#430422
Galera, to com um problemão.

Procurei em toda parte, mas não achei o que preciso.

Tenho uma listview com varias colunas. E coloquei um menu para o cliente poder escolher quais colunas ele quer que apareça.

A unica solução que encontrei foi de reduzir o tamanho da coluna para 0. Mas não acho interessante já que se a pessoa quiser aumentar uma coluna, a zerada ira aparecer.

Precisava de um jeito de um jeito que ela ficasse oculta, se tivesse um [Ô]visible[Ô] nas propriedades, seria perfeito.


Alguém poderia me dar uma força?

Desde já agraço..
PEGUDO 29/10/2013 10:18:30
#430474
Resposta escolhida
Cara,
Não sei como o teu programa funciona ou como você faz para retornar os dados que aparecem no ListView, mas eu fiz um exemplo que pode ser o que você quer (dá um pouco de trabalho mas até funciona):
1º - Para popular o ListView, eu criei um Vetor (Array) no escopo do código para ele ficar visível em todo o editor:
Private Vetor(,) As String = {{[txt-color=#e80000][Ô]Linha 1[Ô][/txt-color], [txt-color=#e80000][Ô]Coluna 2[/txt-color][Ô], [txt-color=#e80000][Ô]Coluna 3[Ô][/txt-color]}, {[txt-color=#e80000][Ô]Linha 2[Ô][/txt-color], [txt-color=#e80000][Ô]Coluna 2[Ô][/txt-color], [txt-color=#e80000][Ô]Coluna 3[Ô][/txt-color]}}

2º - Aí eu populo o ListView no [txt-color=#0000f0]Load[/txt-color] do formulário (Repito que isto é no meu exemplo, não sei como você faz com o seu, nem sei quantas colunas seu ListView tem - o meu tem três colunas)
[txt-color=#0000f0]For[/txt-color] A = 0 [txt-color=#0000f0]To[/txt-color] Vetor.Lenght - 1
[txt-color=#0000f0]Try
Dim[/txt-color] Item [txt-color=#0000f0]As[/txt-color] ListViewItem = ListView1.Items.Add(Vetor(A, 0))
Item.SubItems.Add(Vetor(A, 1))
Item.SubItems.Add(Vetor(A, 2))
[txt-color=#0000f0]Catch[/txt-color] ex [txt-color=#0000f0]As[/txt-color] Exception

[txt-color=#0000f0]End Try
Next[/txt-color]

3º - Neste exemplo vou [Ô]ocultar[Ô] a segunda coluna quando clicar em um botão:
ListView1.Columns.Item(1).Dispose()

Na verdade eu a retirei do ListView
4º - Para exibi-la novamente, eu preciso limpar todo o ListView, inclusive as colunas, e repopula-lo novamente, colocando as colunas de volta, os items e, no final, auto dimensiono as colunas de acordo com o tamanho do texto:
        ListView1.Items.Clear()
ListView1.Columns.Clear()

[txt-color=#0000f0]For[/txt-color] A = 0 [txt-color=#0000f0]To[/txt-color] 2
ListView1.Columns.Add([txt-color=#e80000][Ô]Coluna [Ô][/txt-color] & (A + 1))
Next

[txt-color=#0000f0]For[/txt-color] B = 0 [txt-color=#0000f0]To[/txt-color] Vetor.Length
[txt-color=#0000f0]Try[/txt-color]
[txt-color=#0000f0]Dim[/txt-color] Item [txt-color=#0000f0]As[/txt-color] ListViewItem = ListView1.Items.Add(Vetor(B, 0))
Item.SubItems.Add(Vetor(B, 1))
Item.SubItems.Add(Vetor(B, 2))
[txt-color=#0000f0]Catch[/txt-color] ex [txt-color=#0000f0]As[/txt-color] Exception

[txt-color=#0000f0]End Try
Next

For[/txt-color] C = 0 [txt-color=#0000f0]To[/txt-color] ListView1.Columns.Count - 1
ListView1.Columns.Item(C).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent)
[txt-color=#0000f0]Next[/txt-color]

Espero que ajude de alguma maneira.
LNACER 30/10/2013 14:26:20
#430542
é basicamente isso mesmo cara.

No load, eu lanço os itens e subitens no listview a partir do banco de dados.

Tem 7 colunas fixas, mas que o usuário pode escolher quais ele quer que fique aparecendo.


Vou testar esse jeito que você disse, valeu mesmo cara.
Tópico encerrado , respostas não são mais permitidas