如果DataGridView单元格值大于另一个单元格

时间:2016-10-04 16:32:23

标签: c#

您好我想比较两个单元格,两个单元格都有数字值。 如果Cell1大于cell2,则颜色单元为绿色。

这是我的代码:在datagridview中的Cell Formating

foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            if (row.Cells[3].Value.ToString() >  (row.Cells[4].Value.ToString()))
            {
                row.Cells[3].BackColor = Color.PaleGreen;
            }

但我得到两个错误:在第一线运营商'>'不能应用于' string'类型的操作数和'字符串'并在第二行System.Windows.Forms.DataGridViewCell'不包含' BackColor'的定义没有扩展方法' BackColor'接受类型' System.Windows.Forms.DataGridViewCell'的第一个参数。可以找到

2 个答案:

答案 0 :(得分:0)

您需要将字符串转换为int,double,long,decimal或任何其他数字。

目前,您正在尝试将两个字符串比较,就好像它们是数字一样。

如果正确记住

,则使用不带.ToString()的.Value应该有效

答案 1 :(得分:0)

这两个错误都是有效的。您将单元格值转换为字符串,但如果要将其作为数字进行比较,则需要将它们作为数字。 BackColor也属于单元格的样式属性。所以你的代码应该更像这样:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
    double value1;
    double value2;
    if(!double.TryParse(row.Cells[3].Value.ToString(), out value1) || !double.TryParse(row.Cells[4].Value.ToString(), out value2))
    {
        // throw exception or other handling here for unexcepted values in cells
    }
    else if (value1 >  value2)
    {
        row.Cells[3].Style.BackColor = Color.PaleGreen;
    }