📜  datagridview 列颜色 c# (1)

📅  最后修改于: 2023-12-03 14:40:37.744000             🧑  作者: Mango

DataGridView 列颜色设置

在 C# 中,DataGridView 是一个非常常用的控件,可以用来展示数据并允许用户进行编辑和操作。其中一个常见的需求就是对 DataGridView 的列进行颜色设置,以便区分不同的数据。

方法一:使用DefaultCellStyle

DataGridView 的每个列都有一个默认单元格样式属性(DefaultCellStyle),可以通过设置这个属性来改变列的颜色。

// 设置第二列的背景色为黄色
dataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.Yellow;
方法二:使用CellFormatting事件

DataGridView 还提供了一个 CellFormatting 事件,可以在每个单元格渲染之前触发,允许我们在这个事件中根据单元格的值或其他条件来动态改变单元格的颜色。

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 2) // 如果是第三列
    {
        int value = (int)e.Value;
        if (value > 80) // 如果成绩大于 80,设为绿色
            e.CellStyle.BackColor = Color.Green;
        else if (value > 60) // 如果成绩在 60~80 之间,设为黄色
            e.CellStyle.BackColor = Color.Yellow;
        else // 如果成绩低于 60,设为红色
            e.CellStyle.BackColor = Color.Red;
    }
}
方法三:使用RowPrePaint事件

如果我们需要对整个行进行颜色设置,可以使用 DataGridView 的 RowPrePaint 事件。这个事件在每一行绘制之前触发,允许我们根据行的值或其他条件来动态改变行的颜色。

private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    int value = (int)dataGridView1.Rows[e.RowIndex].Cells[2].Value;
    if (value > 80) // 如果成绩大于 80,设为绿色
        dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Green;
    else if (value > 60) // 如果成绩在 60~80 之间,设为黄色
        dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
    else // 如果成绩低于 60,设为红色
        dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
}

以上就是三种常见的对 DataGridView 列进行颜色设置的方法。根据需求不同,可以选择不同的方法来实现。