VB.NET自定义列表视图-如何获取imagelist?

VB.NET自定义列表视图-如何获取imagelist?,vb.net,listview,Vb.net,Listview,我有一些我正在使用的代码来向子项添加图标。它的工作非常好,但现在我需要在子项列中居中图标。为此,我需要在DrawSubItem事件下重新绘制图标。如何连接到listviews分配的imagelist?(我使用的是Inherits Windows.Forms.ListView) 谢谢 Private Sub lvResult_DrawSubItem(ByVal sender As Object, ByVal e As DrawListViewSubItemEventArgs) If e.S

我有一些我正在使用的代码来向子项添加图标。它的工作非常好,但现在我需要在子项列中居中图标。为此,我需要在DrawSubItem事件下重新绘制图标。如何连接到listviews分配的imagelist?(我使用的是Inherits Windows.Forms.ListView)

谢谢

Private Sub lvResult_DrawSubItem(ByVal sender As Object, ByVal e As DrawListViewSubItemEventArgs)
    If e.SubItem.Text = "" Then
        Dim xpos = e.SubItem.Bounds.Location.X + (e.SubItem.Bounds.Width / 2) - 8
        Dim p As New PointF(xpos, e.SubItem.Bounds.Location.Y)
        e.DrawBackground()

          e.Graphics.DrawImage(***NEED IMAGE HERE FROM THE IMAGELIST***, p)
    Else
        e.DrawDefault = True
    End If


End Sub

只需使用该属性即可:

e.Graphics.DrawImage(Me.SmallImageList.Images("myImage")...
显然,您应该进行一些错误检查,以确保图像存在,等等


但这说明了为什么您可能会走上错误的道路,因为您的自定义控件现在需要了解表单上存在的一些图像。不是一个好的面向对象设计。听起来您不需要自定义控件。

谢谢,这正是我需要的。我不想仅仅使用自定义控件来升级这个东西,这样我就可以将图标居中并获得双缓冲。如果你对它进行子类化,你应该使用
OnDrawSubItem
,而不是使用事件。然后,使用
e
中的索引从相关图像列表中了解要使用的图像。这些子项中是否有文本,还是为图像保留?