我究竟如何在Visual Basic中创建多列列表框?

时间:2016-04-22 18:55:21

标签: vb.net

我正在寻找的是一个包含多列的列表框,例如书籍的列表框,其中每一行都有标题,价格,作者。

任何能够给我一些关于如何将项目添加到列表的指针的人的奖励积分也是如此。我在猜猜

listBox1.Items.Add(“哈利波特”,“JK罗琳”,5.99);

不会工作?

5 个答案:

答案 0 :(得分:3)

您需要更改属性:

Me.listBox1.MultiColumn = True

添加单曲:

listBox1.Items.Add("Item")

添加多个:

With Me.listBox1
    Me.listBox1.ColumnCount = 2
    .AddItem
    .List(i, 0) = "something for first column"
    .List(i, 1) = "something for second column"
    i = i + 1
end with

详细了解列表框1 2

现在你应该真正使用ListView:

    'Add Three Columns To ListView 2
    ListView2.Columns.Add("Zodiac", 100, HorizontalAlignment.Center) 'Column 1
    ListView2.Columns.Add("From", 100, HorizontalAlignment.Left) 'Column 2
    ListView2.Columns.Add("To", 100, HorizontalAlignment.Right) 'Column 3

    'Show Small Images Next To Zodiac Sign
    ListView2.SmallImageList = ImageList2

    'Declare Array For ListView Items
    Dim arrLVItem(11) As ListViewItem

    Dim j As Integer 'Loop Counter

    'Loop Through Each ListViewItem Array Item
    For j = 0 To arrLVItem.Length - 1

        'Initialize ListViewItem Array
        arrLVItem(j) = New ListViewItem

        'Add Text To First ListView Item - The Zodiac Sign
        arrLVItem(j).SubItems(0).Text = arrZodiac(j)

        'Add From and To SubItems On Zodiac ListView Item
        arrLVItem(j).SubItems.Add(arrFrom(j))
        arrLVItem(j).SubItems.Add(arrTo(j))

        'Connect ListView Item With Its Associated Picture
        arrLVItem(j).ImageIndex = j

    Next j

    'Add Completed Arrays To [ListView][3]
    ListView2.Items.AddRange(arrLVItem)

答案 1 :(得分:2)

之前我遇到过同样的问题,转而使用ListViews。类似的东西:

Public Class Form1
Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    Dim lv As New ListView
    With lv
        .View = View.Details
        .FullRowSelect = True
        .Columns.Add("Title")
        .Columns.Add("Author")
        .Columns.Add("Price")
    End With

    Me.Controls.Add(lv)
    lv.Dock = DockStyle.Fill

    lv.Items.Add(New ListViewItem({"Harry Potter", "J.K. Rowling", 5.99}))
End Sub
End Class

答案 2 :(得分:1)

您可以向列表框添加任何类型的对象。创建一个包含所需属性的类并重写ToString方法。列表框使用它来显示项目。

Public Class Book
    Public Property Title As String
    Public Property Author As String
    Public Property Price As Decimal

    Public Overrides Function ToString() As String
        Return String.Format("{0} by {1} at {2:c}", Title, Author, Price)
    End Function
End Class

然后

Dim p = New Person With {.Title = "Harry Potter", .Author = "JK Rowling", Price = 5.99D}
listBox1.Items.Add(p)

答案 3 :(得分:0)

 Me.ListBox1 = New System.Windows.Forms.ListBox()
    Me.SuspendLayout()
    ' 
    ' listBox1
    ' 
    Me.ListBox1.FormattingEnabled = True
    Me.ListBox1.HorizontalScrollbar = True
    Me.ListBox1.Items.AddRange(New Object() {"Item 1, column 1", "Item 2, column 1", "Item 3, column 1", "Item 4, column 1", "Item 5, column 1", "Item 1, column 2", "Item 2, column 2", "Item 3, column 2"})
    Me.ListBox1.Location = New System.Drawing.Point(0, 0)
    Me.ListBox1.MultiColumn = True
    Me.ListBox1.Name = "listBox1"
    Me.ListBox1.ScrollAlwaysVisible = True
    Me.ListBox1.Size = New System.Drawing.Size(120, 95)
    Me.ListBox1.TabIndex = 0
    Me.ListBox1.ColumnWidth = 85
    ' 
    ' Form1
    ' 
    Me.ClientSize = New System.Drawing.Size(292, 273)
    Me.Controls.Add(ListBox1)
    Me.Name = "Form1"
    Me.ResumeLayout(False)
End Sub

答案 4 :(得分:0)

我只是在同一个问题上挣扎。实际上很容易解决。您只需要在每一个之间加上加号,它们就会留在同一行。如果要在它们之间留出空间,只需添加“ \ t”。所以: listBox1.Items.Add(“哈利·波特” +“ \ t” +“ JK罗琳” +“ \ t” + 5.99);

相关问题