迭代DataGridView的每个单元格

时间:2018-03-16 13:36:37

标签: c# winforms datagridview

我想迭代我的DataGridView的每个单元格,如果值= 0或0.00我想将其更改为 - 我有以下代码,但我收到错误

  

可能的意外参考比较

在这里实现目标的正确方法是什么?

foreach (DataGridViewRow rw in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in rw.Cells)
    {
       if (rw.Cells[0].Value == "0")
       {
          rw.Cells[0].Value = "-";
       }
    }
}

1 个答案:

答案 0 :(得分:0)

根据MSDN documentationDataGridViewCell.Value会返回object。现在,您想将其与string“0”进行比较 在尝试比较objectstring时,您将比较他们的引用,而不是他们的。基本上你只是检查他们是否指向同一个对象 如果您的单元格始终包含string类型的对象,则只需执行以下操作:

foreach (DataGridViewRow rw in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in rw.Cells)
    {
        var currentValue = (string)rw.Cells[0].Value;
        if (currentValue == "0")
        {
            currentValue = "-";
        }
    }
}

更安全的方法:

foreach (DataGridViewRow rw in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in rw.Cells)
    {
        var currentValue = rw.Cells[0].Value as string;
        if (currentValue != null && currentValue == "0")
        {
            currentValue = "-";
        }
    }
}