Public Class Form1
' establecemos el tipo de vista que necesitamos, nuestro caso es detalles
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListView1.View = View.Details ' si no no se verán las columnas
End Sub
' actualizamos al número de columnas elegido.
Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
Call LlenaColumna(sender.value)
End Sub
' creamos 10 items por cadacolumna para ilustrar el ejemplo.
Public Sub LlenaColumna(ByVal Columnas As Integer)
Dim nuevaSubIt() As Windows.Forms.ListViewItem.ListViewSubItem
' borramos las que tenía previamente, si no con cada llamada el número aumenta.
Me.ListView1.Columns.Clear()
Me.ListView1.Items.Clear()
System.Windows.Forms.Application.DoEvents()
For Col As Integer = 0 To Columnas - 1 ' porque de 0 a 10 hay 11 elementos, no 10, restamos 1
Me.ListView1.Columns.Add("Columna" & Col.ToString, 120) ' texto y ancho
' si la columna ya fue creada podemos usar estas otras líneas para modificar esos valores
' ListView1.Columns(Col).Text = "Columna" & Col.ToString ' texto de la columna
' ListView1.Columns(Col).Width = 120 ' ancho de la columna
Next
System.Windows.Forms.Application.DoEvents()
ReDim nuevaSubIt(0 To Columnas - 1)
For It As Byte = 0 To 9 ' 9 itemes
Me.ListView1.Items.Add("Item" & It.ToString) ' columna 0
System.Windows.Forms.Application.DoEvents()
For Col As Integer = 1 To Columnas - 1
nuevaSubIt(Col) = New Windows.Forms.ListViewItem.ListViewSubItem(ListView1.Items(It), "Item" & It.ToString & "_Columna" & Col.ToString)
' si ya han sido creado los subitems, usaríamos esta línea
'Me.ListView1.Items(It).SubItems(Col).Text = "Item" & It.ToString & "_Columna" & Col.ToString
Next
Me.ListView1.Items(It).SubItems.AddRange(nuevaSubIt)
System.Windows.Forms.Application.DoEvents()
Next
End Sub
End Class