我正在尝试更改DataGridView中某些单元格的颜色,具体取决于该值与其他单元格中的值相同。可悲的是,它没有用。这是我认为应该工作的代码:
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
for (int j = 1; j < 8; j++)
for (int k = 8; k < 20; k++)
if (dataGridView2.Rows[i].Cells[j].Value == dataGridView2.Rows[i].Cells[k].Value)
dataGridView2.Rows[i].Cells[j].Style.BackColor = Color.Green;
}
dataGridView2.Refresh();
所有列都是使用typeof(int)创建的,因此它不应该是类型问题。调试显示我的程序确实输入了if子句,但它仍然没有显示更改。
提前感谢您的帮助。
答案 0 :(得分:1)
我在我工作的其中一个应用程序中执行此操作。我可以想到,最好的方法是覆盖DataGridView.CellFormatting事件。
在我的应用程序中,数据源的每一行都有四个布尔属性,我想为每个属性添加一个彩色框。
void uxGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
var item = uxGrid.Rows[e.RowIndex].DataBoundItem as NiftyThing;
if(item != null)
{
if(item.Property1)
{
e.CellStyle.SelectedBackColor = e.CellStyle.BackColor = Color.Red;
//Don't display 'True' or 'False'
e.Value = string.Empty;
}
else if(item.Property2)
...
}
}
catch { }
}
我希望有所帮助!