我有一些代码可以在指定单元格中的值低于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;
感谢您的帮助。
答案 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;
}