¿Cómo puedo hacer que las columnas de ListView cambien de tamaño automáticamente mediante programación?
-
09-06-2019 - |
Pregunta
Encontré algunos ejemplos usando la API de Win32 o simulando la combinación de botones ^+ (control-+) usando enviar claves, pero al menos con el método SendKeys, la vista de lista toma el cursor y lo configura como un reloj de arena hasta que presiono el botón de inicio en mi teclado.¿Cuál es la forma más limpia de hacer esto?
Solución
Parece una llamada a myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
hará lo que quieras.Yo pensaría, simplemente llámalo después de agregar un elemento.
Más información aquí
Otros consejos
De acuerdo a MSDN, si establece el ancho de la columna en -1, se ajustará automáticamente al elemento más ancho
recorra todas las columnas y establezca el ancho en -1 después de agregar contenido.
Después de agregar la siguiente rutina a su código, llámela desde cualquier procedimiento/función.Sin embargo, no lo utilice en su procedimiento "Form_Load".Llámelo solo después de haber agregado un elemento a su ListView (o si está realizando varias adiciones, llámelo una vez al final de todas las adiciones):
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