根据单元格样式的值更改单元格样式

本文关键字:单元格 样式 | 更新日期: 2023-09-27 17:58:14

我正在创建一个基于窗体和DataGridView控件的应用程序。

我正在绑定数据库中的信息,现在我要做的是根据列属性的值(可以是"Urgent","Haute","Normale")更改其字体样式和颜色。

这是我正在使用的代码,但它不起作用,有人能告诉我下面的代码出了什么问题吗?

代码:

private void ColorizeCellsbyValue() {
        DataGridViewCellStyle BoldRed = null;
        BoldRed = new DataGridViewCellStyle();
        BoldRed.Font = new Font("Tahoma", 9, FontStyle.Bold);
        BoldRed.ForeColor = Color.Red;
        DataGridViewCellStyle Red = null;
        Red = new DataGridViewCellStyle();
        Red.ForeColor = Color.Red;
        DataGridViewCellStyle Black = null;
        Black = new DataGridViewCellStyle();
        Black.ForeColor = Color.Black;
        string priority;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            priority = row.Cells[3].Value.ToString();
            switch (priority)
            {
                //Change font 
                case "Urgent":
                    row.Cells[3].Style = BoldRed;
                    break;
                case "Haute":
                    row.Cells[3].Style = Red;
                    break;
                case "Normale":
                    row.Cells[3].Style = Black;
                    break;
                default:
                    row.Cells[3].Style = Black;
                    break;
            }
        }
}

根据单元格样式的值更改单元格样式

您不需要创建DataGridViewCellStyle来设计Column属性。试着找出我的简单例子

        foreach (DataGridViewRow rows in dataGridView1.Rows)
        {
            if (rows.Cells[3].RowIndex % 2 == 0)
            {
                rows.Cells[3].Style.Font = new Font("Tahoma", 9, FontStyle.Bold);
                rows.Cells[3].Style.BackColor = Color.Red;
            }
            else
            {
                rows.Cells[3].Style.Font = new Font("Arial", 9, FontStyle.Regular);
                rows.Cells[3].Style.BackColor = Color.Blue;
            }
        }

我对你的主要问题的回答是尝试使用.EditedFormattedValue.ToString()

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            priority = row.Cells[3].EditedFormattedValue.ToString();
            switch (priority)
            {
                //Change font 
                case "Urgent":
                    row.Cells[3].Style = BoldRed;
                    break;
                case "Haute":
                    row.Cells[3].Style = Red;
                    break;
                case "Normale":
                    row.Cells[3].Style = Black;
                    break;
                default:
                    row.Cells[3].Style = Black;
                    break;
            }
        }

尝试使用

row.Cells[3].Style.BackColor = <Color>;

对于ForeColor,使用

row.Cells[3].Style.ForeColor = <Color>;

这应该行得通。编码快乐!