如何使用自己的值以编程方式更改列表视图中单个单元格的背景颜色?
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); }
提前致谢
据我所知,你所拥有的代码看起来很好.我只是将一个快速的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.它看起来像你正在将所有项目设置为相同的颜色,这可能不是你想要的.
看看这些链接:
C#ListView详细信息,突出显示单个单元格
使用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); }