在datatable c#中绑定datagridview字体颜色

时间:2015-07-18 02:23:33

标签: c# vb.net datagridview datatable

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

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

是否有将样式绑定到with datatable和datagridview的解决方案?

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

目前这正是我在做的事情。最大的问题是,在实现过滤器之后,样式属性全部消失了,它又变成了没有彩色的柱子(再次全黑)

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";
                }

谢谢

1 个答案:

答案 0 :(得分:0)

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

干杯

编辑:

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