所有问题都存在,我有一个数据网格视图,他的行集合中的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所以我尝试每次他离开行来解析它是否有任何双重
答案 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)
是否存在,也许它正在尝试获取行中不存在的单元格中的数据。