Как изменить обратную сторону подтипа listview с использованием собственного значения
Как я могу программно изменить задний цвет отдельной ячейки в списке, используя свое собственное значение?
![alt text]()
Значения в столбце ColorFlag Came из базы данных.
Вот мой код:
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); }
Вот код, который я попытался изменить обратную цветность ячеек:
for (int _i = 0; _i < _owLV.Items.Count; _i++)
{
_myListView.Items[_i].UseItemStyleForSubItems = false;
_myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo);
}
Заранее спасибо
Ответы
Ответ 1
Насколько я могу судить, код, который у вас хорошо выглядит. Я просто собрал быстрое приложение 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 перед тем, как вы добавите элемент. Также похоже, что вы устанавливаете все элементы того же цвета, что, вероятно, не то, что вы хотите.
Ответ 2
Взгляните на эти ссылки:
С# ListView Detail, выделите одну ячейку
Изменение цвета ячейки списка списка с помощью С# (имеет рабочее решение)
Ключевым моментом является установка этого параметра:
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);
}