Vb.net 多栏列表视图上的图标
我用这个:Vb.net 多栏列表视图上的图标,vb.net,winforms,visual-studio-2010,windows-xp,Vb.net,Winforms,Visual Studio 2010,Windows Xp,我用这个: Public Shared Sub FulfillListView(ByVal Icon As Icon, ByVal Item1 As String, ByVal Item2 As String, ByVal sender As Object, ByVal e As System.EventArgs) Dim imageListSmall As New ImageList() vehicles_prod.OpenOrdersLB.SmallImageList = i
Public Shared Sub FulfillListView(ByVal Icon As Icon, ByVal Item1 As String, ByVal Item2 As String, ByVal sender As Object, ByVal e As System.EventArgs)
Dim imageListSmall As New ImageList()
vehicles_prod.OpenOrdersLB.SmallImageList = imageListSmall
Try
Dim SubItem As New ListViewItem("", 0)
imageListSmall.Images.Add(Icon)
SubItem.SubItems.Add(Item2)
SubItem.SubItems.Add(Item1)
vehicles_prod.OpenOrdersLB.Items.AddRange(New ListViewItem() {SubItem})
Catch ex As Exception
MessageBox.Show(ex.Message, "=> FulfillListView")
End Try
End Sub
要完全填充多列列表视图在每行(子项行)的开头,我希望有一个图标,每次都不同
我看到的唯一图标是最后输入的图标,所有行的图标都相同
请帮助我在每行中设置不同的图标。
是的,您可以反复创建图像列表。每个项目都有相同的imageIndex,0。因此,项目只能具有相同的图标,即您添加的最后一个图标。这将解决问题:
Public Shared Sub FulfillListView(ByVal Icon As Icon, ByVal Item1 As String, ByVal Item2 As String, ByVal sender As Object, ByVal e As System.EventArgs)
If vehicles_prod.OpenOrdersLB.SmallImageList Is Nothing Then
vehicles_prod.OpenOrdersLB.SmallImageList = New ImageList
End If
vehicles_prod.OpenOrdersLB.SmallImageList.Images.Add(Icon)
Dim SubItem As New ListViewItem("", vehicles_prod.OpenOrdersLB.SmallImageList.Images.Count - 1)
'' etc...
但是如果listview包含很多项,就不要这样做。图像列表将变得相当大,可能会有很多重复。这使它变慢了。然后,显式管理图像列表变得非常重要。您可以提前向设计师填写图像列表,也许这是合适的。新年快乐。最后,我想非常感谢你的回答,这是最好的一个。而且我在代码中发现了一个错误(我从“订单”表的错误列中读取)。再次感谢你。