我有一个包含3列的DataGridView,其中两列是用户可编辑的。
在访问单元格的值时,我遇到了一个NullRef异常
someObject.Property = dgv.Rows(x).Cells(y).Value.ToString()这显然是因为我在使用该值之前没有检查是否为null。因此,我决定更改初始化DataGridView的对象,使填充单元格的Nothing属性从不包含null值,而不是只检查null值(我现在就会这么做,不用担心)。我只是改用了String.Empty。
我以为一切都很好,但似乎当我编辑单元格并将其留空时,它会将其视为null值而不是String.Empty。我已经处理了CellBeginEdit、CellEndEdit和CellLeave事件,试图找出它是从哪里获得这个神奇的空值的,但无济于事。
我看到了the DataGridViewCellStyle.NullValue property on the MSDN,我以为它就是答案,但事实证明,NullValue属性缺省为String.Empty,所以这没有多大意义。
显然,这里的简单答案是“在使用之前检查null”,但是为什么我不能强制它将空字符串视为空字符串而不是null呢?
发布于 2014-07-03 07:37:54
数据网格单元格值是对象,空字符串为null。
您可以将其转换为字符串,然后检查是否为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)https://stackoverflow.com/questions/24207000
复制相似问题