繁体   English   中英

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

[英]How can I set cell font colour in a DataGridView?

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

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

其中“单元格”是我当前正在检查的单元格。 这绝对没有任何作用。 即使我将其从循环中取出并进行如下检查:

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

    }

我最终要做的是将它与另一个事件联系在一起。 由于DataGridView位于TabControl内,并且不在主选项卡中,因此我在单击TabControl时进行了检查。

可能不是最佳实践,当然也不是理想的方法,但是它现在可以正常工作。

这种属性(ForeColor或BackColor ...)应在Form Load event handler (或Form Shown)中更改,或在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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM