0

我正在创建一个基于表单和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;
            }
        }
}
4

2 回答 2

1

您无需创建一个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;
            }
        }
于 2013-02-08T12:18:59.830 回答
1

尝试使用

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

ForeColor使用

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

这应该有效。快乐编码!

于 2013-02-08T11:53:20.453 回答