在 DataListView 中设置图像(ObjectListView 的一部分)

Setting images in DataListView (Part of ObjectListView)

我刚刚开始使用 DataListView(ObjectListView 包的一部分)。我将数据表绑定到 DataListView,但现在我想根据特定条件将图像添加到数据中。我花了几个小时阅读帮助文件 (http://objectlistview.sourceforge.net/cs/recipes.html#how-do-i-bind-a-dataset-to-an-objectlistview),但它们似乎都引用了 'ObjectListView' 而不是 'DataListView'。

我已经阅读了很多关于 imagegetter 的内容,但我认为当您绑定到数据表时这并不适用(如果是,如何?)。

我是否应该遍历每一行并根据条件手动添加图像?如果是这样,你能帮我开始吗?

这是他们网页上的一个例子。查看他们如何根据数据在第一列(和其他列)中显示图像?我想用 DataListView 做到这一点。

提前致谢。我正在使用 VB.net

现在我有了这个:

    Dim myImages = New ImageList
    myImages.Images.Add(My.Resources.important_High_icon)
    myImages.Images.Add(My.Resources.important_Med_icon)
    myImages.Images.Add(My.Resources.important_Low_icon)
    myDataListView.SmallImageList = myImages

    myDataListView.OwnerDraw = True
    Image_Column.ImageGetter = Function(x As Object) As Integer
                                   Select Case (Important_Column.value)
                                       Case "High"
                                           Return 0
                                       Case "Medium"
                                           Return 1
                                       Case "Low"
                                           Return 2
                                   End Select
                               End Function

如何引用该行中的另一列作为逻辑依据?在上面的示例中,我试图引用 'Important_Column'

中的值

首先,将列表的 OwnerDraw 属性 设置为 true:

yourList.OwnerDraw = True 

然后 link 你的列表到 ImageList:

   myImages = New ImageList
   myImages.Images.Add(My.Resources.image_1)
   myImages.Images.Add(My.Resources.image_2)
   yourList.SmallImageList = yourImageList

然后您应该在您的 ObjectListView 列上设置图像 getter 委托,例如:

myOlvColumn.ImageGetter = 
    Function(x As Object) As Integer
        Dim casted As yourColumnRealType = DirectCast(x, yourColumnRealType)
        Return If(yourCondition, 0, 1)
    End Function

委托函数 return 是图像列表的索引,或者,由于 ObjectListView 是 owner-drawn,委托可以 return 图像。