我有一个包含3列的DataGridView
,其中两列是用户可编辑的。
在访问单元格的值时,我得到了一个NullRef异常
someObject.Property = dgv.Rows(x).Cells(y).Value.ToString()
这显然是因为我在使用该值之前没有检查null。因此,我决定更改初始化Nothing
的对象,而不是仅仅检查DataGridView
值(我将立即执行,从不担心),而是为填充单元格的字符串属性更改为永远不会为null。我刚刚使用了String.Empty
。
我认为一切都会很好,但似乎当我编辑单元格并将其留空时,它会将其视为空值而不是String.Empty
。我已经处理了CellBeginEdit
,CellEndEdit
和CellLeave
事件,试图找到它从哪里获得这个神奇的空值无济于事。
我看到了the DataGridViewCellStyle.NullValue
property on the MSDN,我认为这是答案,但事实证明,NullValue
属性默认为String.Empty
,因此不会产生很多感。
显然,这里的简单答案是"在使用它之前只检查null",但是为什么我不能强制它将空字符串视为空字符串而不是null?
答案 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)