我正在寻找的是一个包含多列的列表框,例如书籍的列表框,其中每一行都有标题,价格,作者。
任何能够给我一些关于如何将项目添加到列表的指针的人的奖励积分也是如此。我在猜猜
listBox1.Items.Add(“哈利波特”,“JK罗琳”,5.99);
不会工作?
答案 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
现在你应该真正使用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);