datagridviewcell将空的可编辑单元格视为null,忽略DataGridViewCellStyle.Null

本文关键字:null 忽略 Null DataGridViewCellStyle 单元格 编辑 datagridviewcell | 更新日期: 2023-09-27 18:08:25

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

当访问单元格的值时,我得到了一个NullRef异常

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

这显然是因为我在使用值之前没有检查null。因此,而不是仅仅检查Nothing值(我现在要做的,不要害怕),我决定改变初始化DataGridView的对象,使其永远不包含填充单元格的字符串属性为空。我只是用String.Empty代替。

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

我在MSDN上看到了DataGridViewCellStyle.NullValue属性,我认为这将是答案,但是,事实证明,NullValue属性默认为String.Empty,因此这没有多大意义。

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

datagridviewcell将空的可编辑单元格视为null,忽略DataGridViewCellStyle.Null

数据网格单元格值是对象,空字符串为null。

可以将其转换为字符串,然后检查是否为字符串。空的,但不是太远,只是检查是否没有

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)