none
Como poner columnas a un ListBox RRS feed

Respuestas

  • Puedes agregar columnas a un ListBox utilizando OwnerDraw, aunque probablemente te resulte más cómodo usar otros controles más apropiados. Depende de la aplicación concreta.

    Si realmente necesitas usar un ListBox, te puede valer algo así:

    En las propiedades de tu ListBox asigna DrawMode = OwnerDrawFixed

    Y un código del tipo:

    Class Empleado
        Public Property Nombre As String
        Public Property Telefono As String
    End Class
    
    Para cargar los ítems (en el load por ejemplo):
    
    Dim empleados As New List(Of Empleado)
    empleados.Add(New Empleado With {.Nombre = "Pedro", .Telefono = "616616626"})
    empleados.Add(New Empleado With {.Nombre = "Juan", .Telefono = "712893729"})
    empleados.Add(New Empleado With {.Nombre = "Jose", .Telefono = "155252578"})
    ListBox1.DataSource = empleados
    
    
    Y el evento DrawItem del listbox, que es el que pintará las propiedades por columnas:
    
    Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        Dim empleado = TryCast(ListBox1.Items(e.Index), Empleado)
        e.DrawBackground()
        Dim pincel = New SolidBrush(e.ForeColor)
        e.Graphics.DrawString(empleado.Nombre, ListBox1.Font, pincel, e.Bounds)
        e.Graphics.DrawString(empleado.Telefono, ListBox1.Font, pincel, New Point(100, e.Bounds.Top))
    End Sub
    martes, 19 de marzo de 2013 12:06
  • Agregar columnas a un ListBox, asi como se le ahce al DataGridView??'

    Pues la verdad no se con que objeto u idea quieres ahcer eso, de igual manera tu pregunta es muy general, si dieras un poco ams de detalle, como por ejemplo cual es el escenerio que piensas utilziar.. te podriamos dar alguna solucion.

    Personalmente yo no usaria el ListBox para eso tipo de cosas, para eso esta el DataGridView, ademas que creo que lo que deseas no es posible a menos con los con troles nativos de .NET.


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú

    martes, 19 de marzo de 2013 3:30
  • el listbox no tiene columnas

    tendrias que suar otro control como ser el ListView, pero definiendolo como Details

    o sino un DataGridView

    estos dos controels si pueden mostrar columans de datos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 19 de marzo de 2013 3:30

Todas las respuestas

  • Agregar columnas a un ListBox, asi como se le ahce al DataGridView??'

    Pues la verdad no se con que objeto u idea quieres ahcer eso, de igual manera tu pregunta es muy general, si dieras un poco ams de detalle, como por ejemplo cual es el escenerio que piensas utilziar.. te podriamos dar alguna solucion.

    Personalmente yo no usaria el ListBox para eso tipo de cosas, para eso esta el DataGridView, ademas que creo que lo que deseas no es posible a menos con los con troles nativos de .NET.


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú

    martes, 19 de marzo de 2013 3:30
  • el listbox no tiene columnas

    tendrias que suar otro control como ser el ListView, pero definiendolo como Details

    o sino un DataGridView

    estos dos controels si pueden mostrar columans de datos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 19 de marzo de 2013 3:30
  • Puedes agregar columnas a un ListBox utilizando OwnerDraw, aunque probablemente te resulte más cómodo usar otros controles más apropiados. Depende de la aplicación concreta.

    Si realmente necesitas usar un ListBox, te puede valer algo así:

    En las propiedades de tu ListBox asigna DrawMode = OwnerDrawFixed

    Y un código del tipo:

    Class Empleado
        Public Property Nombre As String
        Public Property Telefono As String
    End Class
    
    Para cargar los ítems (en el load por ejemplo):
    
    Dim empleados As New List(Of Empleado)
    empleados.Add(New Empleado With {.Nombre = "Pedro", .Telefono = "616616626"})
    empleados.Add(New Empleado With {.Nombre = "Juan", .Telefono = "712893729"})
    empleados.Add(New Empleado With {.Nombre = "Jose", .Telefono = "155252578"})
    ListBox1.DataSource = empleados
    
    
    Y el evento DrawItem del listbox, que es el que pintará las propiedades por columnas:
    
    Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        Dim empleado = TryCast(ListBox1.Items(e.Index), Empleado)
        e.DrawBackground()
        Dim pincel = New SolidBrush(e.ForeColor)
        e.Graphics.DrawString(empleado.Nombre, ListBox1.Font, pincel, e.Bounds)
        e.Graphics.DrawString(empleado.Telefono, ListBox1.Font, pincel, New Point(100, e.Bounds.Top))
    End Sub
    martes, 19 de marzo de 2013 12:06