Search code examples
c#listviewbackcolorsubitem

How to change the backcolor of a listview subitem using its own value


How can I programmatically change the back color of a single cell in a listview using its own value?

alt text

The values in the ColorFlag Column Came from the database.

Here is my code:

foreach(DataRow dr in _dataTbl.Rows) 
        {
            _markOW = dr["Mark"].ToString();
            _stock = dr["Stock"].ToString();
            _SteelSectio = dr["SteelSection"].ToString();
            _colo = (Int32)dr["Color"];


            ListViewItem _lvi = new ListViewItem(_markOW);
            _lvi.SubItems.AddRange(new string[]{_SteelSectio, _stock,     _colo.ToString()});

            _myListView.Items.Add(_lvi);   }

Here is the code that I have tried to change the backcolor of the cells:

for (int _i = 0; _i < _owLV.Items.Count; _i++)
            {
                _myListView.Items[_i].UseItemStyleForSubItems = false;
                _myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo);
            }

Thanks in advance


Solution

  • As far as I can tell, the code you have looks fine. I just threw together a quick Windows Forms application and tossed a ListView on the form with two columns in detail view. The following code works fine.

    var item1 = new ListViewItem( "Item 1");
    item1.SubItems.Add( "Color" );
    item1.SubItems[1].BackColor = Color.FromArgb( -16711936 );
    item1.UseItemStyleForSubItems = false;
    
    listView1.Items.Add( item1 );
    

    I would try setting the BackColor before you add the item. It also looks like you're setting all the items to the same color which is probably not what you want.