Como posso redimensionar automaticamente as colunas de um ListView programaticamente?
-
09-06-2019 - |
Pergunta
Encontrei alguns exemplos usando a API Win32 ou simulando a combinação de botões ^+ (Ctrl-+) usando SendKeys, mas pelo menos com o método SendKeys o listview pega o cursor e o define como uma ampulheta até que eu aperte o botão Iniciar do teclado.Qual é a maneira mais limpa de fazer isso?
Solução
Parece uma chamada para myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
fará o que você quiser.Eu pensaria, basta chamá-lo depois de adicionar um item.
Mais informações aqui
Outras dicas
De acordo com MSDN, se você definir a largura da coluna como -1, ela será dimensionada automaticamente para o item mais largo
percorra todas as colunas e defina a largura como -1 após adicionar o conteúdo.
Depois de adicionar a seguinte rotina ao seu código, chame-a de qualquer procedimento/função.Porém, não o use em seu procedimento "Form_Load".Chame-o apenas depois de adicionar um item ao seu ListView (ou se estiver fazendo várias adições, chame-o uma vez no final de todas as adições):
Private Sub AutoSizeListViewColumns(oListView As ListView)
Dim nCol As Integer = 0
SuspendLayout()
For nCol = 0 To (oListView.Columns.Count - 1)
oListView.Columns(nCol).Width = -1 'forces autosizing on column
Next
oListView.Refresh()
ResumeLayout()
End Sub