如何使用自己的值以编程方式更改列表视图中单个单元格的背景颜色?
ColorFlag列中的值来自数据库。
这是我的代码:
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);
}
提前致谢
答案 0 :(得分:32)
据我所知,您所拥有的代码看起来不错。我只是将一个快速的Windows窗体应用程序拼凑在一起,并在窗体上抛出一个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。看起来你将所有项目设置为相同的颜色,这可能不是你想要的。
答案 1 :(得分:5)
看一下这些链接:
C# ListView Detail, Highlight a single cell
Changing color of list view cell using 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);
}