我已经通过Visual Studio IDE设置了AlternatingRowStyle BackColor,我的问题是,如果我根据某些条件修改单元格的BackColor,我如何将其设置为正确的行颜色(即白色或交替的行)没有求助于RowIndex的模数。
我尝试了以下但取得了明显的成功,但如果这是解决方案,我不是100%:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
double d = Convert.ToDouble(e.Value);
if (d > 5)
{
e.CellStyle.BackColor = Color.Red;
}
else
{
e.CellStyle.ApplyStyle(dataGridView1.RowsDefaultCellStyle);
}
}
答案 0 :(得分:0)
您应该使用DataGridViewCellPainting
,修改CellStyle
DataGridViewCellPaintingEventArgs
似乎e.CellStyle
实际上并不影响cell.CellStyle
,这意味着如果条件不满足则不需要重置单元格
答案 1 :(得分:0)
由于您根据其值决定了backColor
个细胞,我建议您使用CellValueChanged
个事件。
示例强>:
我假设奇数行为黄色,偶数行默认为白色,以防任何单元符合条件(值> 5)将以红色显示。
private void dataGridView1_CellValueChanged(object sender,DataGridViewCellEventArgs e)
{
int col = e.ColumnIndex;
int row = e.RowIndex;
double d = Convert.ToDouble(dataGridView1[col, row].Value);
switch (row%2)
{
case 0:
if (d > 5)
dataGridView1[col, row].Style.BackColor = Color.Red;
else
dataGridView1[col, row].Style.BackColor = Color.White;
break;
case 1:
if (d > 5)
dataGridView1[col, row].Style.BackColor = Color.Red;
else
dataGridView1[col, row].Style.BackColor = Color.Yellow;
break;
}
}