¿Cómo puedo hacer que las columnas de ListView cambien de tamaño automáticamente mediante programación?

StackOverflow https://stackoverflow.com/questions/57584

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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top