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

15
задан Rye 25 August 2010 в 02:38
поделиться

2 ответа

Насколько я могу судить, ваш код выглядит нормально. Я просто собрал быстрое приложение Windows Forms и добавил ListView в форму с двумя столбцами в подробном представлении. Следующий код работает нормально.

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

listView1.Items.Add( item1 );

Я бы попробовал установить BackColor перед добавлением элемента. Также похоже, что вы устанавливаете для всех элементов один и тот же цвет, что, вероятно, не то, что вам нужно.

34
ответ дан 1 December 2019 в 01:05
поделиться

Взгляните на эти ссылки:

C # ListView Detail, выделите одну ячейку

Изменение цвета ячейки представления списка с помощью C # (есть рабочее решение)

Ключевым моментом является установка это:

listView1.Items[0].UseItemStyleForSubItems = false;

Сделайте это:

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

    ListViewItem _lvi = new ListViewItem(_markOW);

    _lvi.SubItems.AddRange(new string[] {_SteelSectio, _stock, _color.ToString() });    
    _lvi.UseItemStyleForSubItems = false;
    _lvi.SubItems[2].BackColor = Color.FromArgb(_color);

    _myListView.Items.Add(_lvi);
}
5
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: