DataGridView单元格将空可编辑单元格视为null,忽略DataGridViewCellStyle.NullValue属性

时间:2014-06-13 13:52:06

标签: c# .net vb.net datagridview

我有一个包含3列的DataGridView,其中两列是用户可编辑的。

在访问单元格的值时,我得到了一个N​​ullRef异常

 someObject.Property = dgv.Rows(x).Cells(y).Value.ToString()

这显然是因为我在使用该值之前没有检查null。因此,我决定更改初始化Nothing的对象,而不是仅仅检查DataGridView值(我将立即执行,从不担心),而是为填充单元格的字符串属性更改为永远不会为null。我刚刚使用了String.Empty

我认为一切都会很好,但似乎当我编辑单元格并将其留空时,它会将其视为空值而不是String.Empty。我已经处理了CellBeginEditCellEndEditCellLeave事件,试图找到它从哪里获得这个神奇的空值无济于事。

我看到了the DataGridViewCellStyle.NullValue property on the MSDN,我认为这是答案,但事实证明,NullValue属性默认为String.Empty,因此不会产生很多感。

显然,这里的简单答案是"在使用它之前只检查null",但是为什么我不能强制它将空字符串视为空字符串而不是null?

1 个答案:

答案 0 :(得分:0)

datagrid单元格值是对象,空字符串为空。

你可以把它转换成一个字符串,然后检查string.empty,但它只是检查它是否一无所知。

dim _value as string = dgv.Rows(x).Cells(y).Value
someObject.Property = _value

或写一个功能来检查

Public Function checkForNull(_value as object) as string

If _value is nothing then return string.empty else return _value.tostring()

End Function

...

SomeObject.Property = checkForNull(dgv.Rows(x).Cells(y).Value)