我想迭代我的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 = "-";
}
}
}
答案 0 :(得分:0)
根据MSDN documentation,DataGridViewCell.Value
会返回object
。现在,您想将其与string
“0”进行比较
在尝试比较object
和string
时,您将比较他们的引用,而不是他们的值。基本上你只是检查他们是否指向同一个对象
如果您的单元格始终包含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 = "-";
}
}
}