tags:

views:

1429

answers:

2

I'm working with some legacy code and need to change the background color of a row (and the font color) in a ListView in VB6 based on some criteria. I need to change the color of the row when the row is selected and not selected. I can change the font color of a non-selected row via the .Foreground property but I can't change the color in any of the other scenarios.

A: 

Check out this forum post. Here's an sample from the code which colors every other row:

'\\ loop through the rows to select every other row
For i = 1 To lvwBackColour.ListItems.Count
    If (lvwBackColour.ListItems(i).Index Mod 2) = 0 Then

        '\\ add a tick to the checkbox
        lvwBackColour.ListItems(i).Checked = True

        '\\ add the colour to the picturebox
        '\\ See Here (http://msdn2.microsoft.com/en-us/library/aa230480(VS.60).aspx)
        '\\ for information about the Line method
        picBG.Line (0, i - 1)-(1, i), &H4000FF, BF

        '\\ update column four caption
        lvwBackColour.ListItems(i).SubItems(3) = "Hidden column value = 1"

    Else
        '\\ remove the tick from the checkbox
        lvwBackColour.ListItems(i).Checked = False

        '\\ reset backcolour to white
        picBG.Line (0, i - 1)-(1, i), &HFFFFFF, BF

        '\\ reset the Column Four caption
        lvwBackColour.ListItems(i).SubItems(3) = "Hidden column value = 0"
    End If
Next i

'\\ set the listview to use the picturebox image
lvwBackColour.Picture = picBG.Image

Here's the link to the msdn article which talks about the Line method.

C-Pound Guru
A: 

The background color of selected rows is controlled by the system. You cannot change it to anything else.

If you have to be able to change the background of the selected rows, you will need to custom draw the listview -- which, to be honest, is too much of a pain to seriously consider :)

Grammarian