在数据表 c# 中绑定 datagridview 字体颜色

Binding datagridview font color in datatable c#

所以现在我已经设置了数据table并将其绑定到 datagridview。

我的程序所做的是将实时日志保存到数据table。 但是我需要它根据日志级别在每一行中都有一种字体颜色,所以我将它的字体颜色保存在数据 table 中的每一行(第 6 个数据数组 table)

是否有将样式绑定到数据table 和数据网格视图的解决方案?

我也在使用过滤器进行搜索,所以我需要能够备份到它在实施颜色之前曾经拥有的颜色。

目前这就是我正在做的。最大的问题是,在实现过滤器后,样式 属性 全部消失,它再次变成无色列(再次全黑)

if (value.Contains("<Notice>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.ForestGreen;
                    logParserView.Rows[rowNumber][6] = "ForestGreen";
                }
                else if (value.Contains("<Debug>:"))
                {
                   dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.Orange;
                    logParserView.Rows[rowNumber][6] = "Orange";
                }
                else if (value.Contains("<Info>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.Orange;
                    logParserView.Rows[rowNumber][6] = "Orange";
                }
                else if (value.Contains("<Warning>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.Orange;
                    logParserView.Rows[rowNumber][6] = "Orange";
                }
                else if (value.Contains("<Error>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.DarkRed;
                    logParserView.Rows[rowNumber][6] = "DarkRed";
                }
                else if (value.Contains("<Critical>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.DarkRed;
                    logParserView.Rows[rowNumber][6] = "DarkRed";
                }
                else if (value.Contains("<Alert>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.DarkRed;
                    logParserView.Rows[rowNumber][6] = "DarkRed";
                }
                else if (value.Contains("<Emergency>:"))
                {
                    dataGridView1.Rows[rowNumber].DefaultCellStyle.ForeColor = Color.IndianRed;
                    logParserView.Rows[rowNumber][6] = "IndianRed";
                }

谢谢

如果我理解正确,你只需要处理 DataGridView.CellFormatting 事件,并在处理程序中,设置 DataGridViewCellFormattingEventArgs 处理程序参数的 CellStyle

干杯

编辑:

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.Value == someOtherValue)
            e.CellStyle.BackColor = Color.Red;
    }