如何在DataGridView中设置单元格字体颜色?

时间:2013-06-18 17:56:42

标签: c# winforms datagridview

我有一个C#Winforms应用程序,我需要以编程方式设置单元格字体颜色。如果满足条件,则字体应为红色。我已经确认条件检查是正确的,问题在于行

 dgv_Table.Rows[cell.RowIndex].Cells[cell.ColumnIndex].Style.ForeColor = Color.Blue;

“cell”是我正在检查的单元格。这绝对没有。即使我把它从循环中取出并像这样检查:

dgv_Table.Rows[0].Cells[0].Style.ForeColor = Color.Blue;

它仍然无效。代码行位于Main()期间调用的辅助函数中。

如果我设置了DefaultCellValue,那确实会改变视图,但不是我想要的。

 private void Main_Load(object sender, EventArgs e)
    {
        dgv_Table.Rows[0].Cells[0].Style.ForeColor = Color.Blue;
        dgv_Table.Rows[0].Cells[0].Style.BackColor = Color.Black;
        foreach (DataGridViewRow row in dgv_Table.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                cell.Style.BackColor = Color.Black;
                if (cell.OwningColumn.Name == "RiskName" && cell.Value.ToString() != "")
                {
                    string wholeText = cell.Value.ToString();
                    int score = Convert.ToInt32(wholeText.Substring(wholeText.IndexOf("[") + 1, wholeText.IndexOf("–") - 1));
                    if (score > 300)
                    {
                        dgv_Table.Rows[cell.RowIndex].Cells[cell.ColumnIndex].Style.ForeColor = Color.Blue;
                    }
                }
            }
        }

    }

2 个答案:

答案 0 :(得分:1)

我最终做的是把它绑在另一个事件上。因为DataGridView在TabControl中并且不在主选项卡中,所以我在单击TabControl时运行了检查。

可能不是最佳实践,当然也不理想,但它现在有效。

答案 1 :(得分:0)

这种属性(ForeColor或BackColor ...)应该在Form Load event handler(或表格形式)...或DataGridView的其他一些事件处理程序中更改,我认为原因可能是你的DataGridView行没有准备好,我想你把你的代码放在了Form构造函数中。

private void Form1_Load(object sender, EventArgs e){
   //place your code here
   dgv_Table.Rows[0].Cells[0].Style.ForeColor = Color.Blue;
}