格式化datagridview单元格背景不起作用

时间:2014-05-14 12:32:27

标签: c# .net datagridview visual-c#-express-2010

我有一些代码可以在指定单元格中的值低于5时更改datagridview单元格的背景。

    private void dataGridView1_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
    {

        if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("stock"))
        {

            int intValue = (int)e.Value;

            if (intValue <= 5)
            {
                e.CellStyle.BackColor = Color.Red;
                e.CellStyle.SelectionBackColor = Color.DarkRed;
                e.CellStyle.ForeColor = Color.White;
                if (!e.CellStyle.Font.Bold)
                {
                    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
                }
                e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

            }

        }
}

我得到的错误是:

  

当您尝试转换数字时,请确保其值小于无限值。

     

确保原始类型可在目标类型

中转换

我只想检查datagridview单元格中的整数是大于还是小于5 如果是,请在单元格中添加红色背景。

该代码有什么问题?我设法让它在datagridview中看到它工作,但当我尝试使用codeproject.com中的DGVPrinter类打印内容时,它失败并出现上述错误。

有任何线索吗?

我调用DGVPrinter类的错误位于以下行:

int intValue = (int)e.Value;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的屏幕截图清楚地显示e.Value的值是“pezzi”,这不是数字。

如果某些值可能是数字,而某些值可能是非数字(或空白),则应使用TryParse()

int intValue;

if (int.TryParse(e.Value, out intValue) && intValue <= 5)
{
    e.CellStyle.BackColor = Color.Red;
    e.CellStyle.SelectionBackColor = Color.DarkRed;
    e.CellStyle.ForeColor = Color.White;
    if (!e.CellStyle.Font.Bold)
    {
        e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
    }
    e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}