多列 ListView 上的图标

Posted

技术标签:

【中文标题】多列 ListView 上的图标【英文标题】:Icon on a Multicolumn ListView 【发布时间】:2011-06-02 14:19:31 【问题描述】:

我用这个:

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

为了填充多列ListView 在每行的开头(子项目行)我想要一个图标,每次都不同 我看到的唯一图标是最后输入的图标,所有行都相同 请帮助我在每行中使用不同的图标。

【问题讨论】:

【参考方案1】:

是的,您一遍又一遍地创建图像列表。每个项目都有相同的 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 上的图标的主要内容,如果未能解决你的问题,请参考以下文章

用于多列使用的 ListView 与 ListBox

光标数组进入 ListView 但多列

多列listview错误视图

多列listview UWP

如何在 Visual Basic 6 ListView 上进行多列排序?

检测哪个选定项目(在 ListView 多列中)产生了 ContextMenu (Android)