Previous | Index | Next 

[PRB] Images displayed in TreeView, ListView, and other controls aren’t transparent

The VB6 and .NET ImageList controls differ in a minor but important way. If you modify the MaskColor property of the VB6 ImageList control the new setting affects all the images that were previously loaded inside the control. By contrast, if you assign the TransparentColor property of the .NET ImageList control the new setting affects only the images that are loaded after the assignment.

In practice this detail isn’t very important, because you rarely need to change the transparent color for images after the form has been loaded. If you do, however, you can work around this limitation by unloading all the images from the VB6ImageList control, then changing the MaskColor property, and finally reloading the images, as this code demonstrates

         ' save all images, then clear the ListImages collection
        Dim images As New List(Of VB6ListImage)
        images.AddRange(Me.ImageList1.ListImages)
        Me.ImageList1.ListImages.Clear()
        ' change the MaskColor property
        Me.ImageList1.MaskColor = Color.Aqua
        ' reload images into the ImageList control
        For Each img As VB6ListImage In images
            Me.ImageList1.ListImages.Add(, img.Key, img.Picture)
        Next

Notice, however, that images already assigned to control properties won’t be affected by this operation.

 

Previous | Index | Next