数据网格的ForEach上的System.NullReferenceException

时间:2013-09-26 14:10:56

标签: vb.net

所有问题都存在,我有一个数据网格视图,他的行集合中的foreach与dataGridView1.Rows如此相似,而我在第二个if中得到了null类型的错误

Sub DataColumnFirstDouble(ByRef dGridView As DataGridView, ByVal iCol As Integer)

    Dim bFirstRow As Boolean = False
    Dim sTemp As String = ""

    For Each RW As DataGridViewRow In dGridView.Rows

        If (bFirstRow) Then
            If (RW.Cells(iCol).Value.ToString() = sTemp) Then
                RW.Cells(iCol).Selected = True
                dGridView.CurrentCell.Style.BackColor = Color.LightGreen
                dGridView.CurrentCell.Style.ForeColor = Color.White
            End If
        End If

        sTemp = RW.Cells(iCol).Value.ToString()
        bFirstRow = True

    Next

End Sub

顺便说一下,Datagrid填充了1个条目

LongString, Number, Number

Hello     , 8     , 8

当我点击一个新行时也会发生错误,同时在行休假事件中调用该函数

需要一些帮助

顺便说一下,我尝试做的是检查用户何时输入长字符串空间中的名称,该名称是数据库中的主要唯一键,但似乎我找不到任何事情来处理它由vb所以我尝试每次他离开行来解析它是否有任何双重

1 个答案:

答案 0 :(得分:1)

目前尚不清楚错误的位置,您应该进行调试以确定哪个变量完全为空。所以我假设它是RW.Cells(iCol).Value

如果单元格中没有值,则可能为null。这意味着ToString无效。

    If (bFirstRow) Then
        If RW.Cells(iCol).Value IsNot Nothing AndAlso RW.Cells(iCol).Value.ToString() = sTemp Then
            RW.Cells(iCol).Selected = True
            dGridView.CurrentCell.Style.BackColor = Color.LightGreen
            dGridView.CurrentCell.Style.ForeColor = Color.White
        End If
    End If

您甚至可以检查RW.Cells(iCol)是否存在,也许它正在尝试获取行中不存在的单元格中的数据。