Vb.net DataGridView中的最后一行验证
我有这段代码来验证DataGridView中的行。它检查该行中单元格的内容是否在0到10之间,如果是11+,则将以红色突出显示 我遇到的问题是,即使所有数字都在0-10之间,该行的最后一行也会以红色突出显示。 这是一种文件结束的情况吗 在代码中,如果单元格为null,则不会发生任何事情。因此,我认为最后一行也不应对其进行任何处理(只要它是0-10) 将每行作为DataGridView1.Rows中的DataGridViewRow进行Vb.net DataGridView中的最后一行验证,vb.net,datagridview,verification,Vb.net,Datagridview,Verification,我有这段代码来验证DataGridView中的行。它检查该行中单元格的内容是否在0到10之间,如果是11+,则将以红色突出显示 我遇到的问题是,即使所有数字都在0-10之间,该行的最后一行也会以红色突出显示。 这是一种文件结束的情况吗 在代码中,如果单元格为null,则不会发生任何事情。因此,我认为最后一行也不应对其进行任何处理(只要它是0-10) 将每行作为DataGridView1.Rows中的DataGridViewRow进行 如果不是row.Cells(“F3”)。值为DBNull.Va
如果不是row.Cells(“F3”)。值为DBNull.Value,则
将单元格编号设置为整数
如果在CellValidating事件中Integer.TryParse(row.Cells(“F3”).Value,cellNumber)和also cellNumber>=0和also cellNumber,则应检查ColumnIndex是否为所需列,而当前行是否为新行。之后,您应该检查该值是否在您的范围内
看看这个例子(我不知道什么是索引F3,所以我假设为0):
私有子DataGridView1\u CellValidating(发送方作为对象,e作为DataGridViewCellValidatingEventArgs)处理DataGridView1.CellValidating
如果e.ColumnIndex=0且也不是DataGridView1.Rows.Item(e.RowIndex.IsNewRow),则
作为字符串的Dim值=e.FormattedValue.ToString()
将数值设置为整数
使用DataGridView1.Rows.Item(e.RowIndex).Cells.Item(e.ColumnIndex).Style
如果Integer.TryParse(例如FormattedValue.ToString,numericValue)和also numericValue>=0和also numericValue,我找出了我缺少的行。。
我必须补充:
也不是行。单元格(“F11”)。值为空
拥有:
如果不是row.Cells(“F3”)。则值为DBNull.Value,也不是row.Cells(“F11”)。则值为零
你尝试过使用这个事件吗?@我没有。我的代码完成了验证整数是否不在我指定的范围内所需的工作,但由于某种原因,Datagridview中的最后一行位于else语句中,并变为高亮显示的红色。(datagridview中的最后一行为空)我将尝试这个建议。此外,F3是datagridview中的列。非常感谢。
For Each row As DataGridViewRow In DataGridView1.Rows
If Not row.Cells("F3").Value Is DBNull.Value Then
Dim cellNumber As Integer
If Integer.TryParse(row.Cells("F3").Value, cellNumber) AndAlso cellNumber >= 0 AndAlso cellNumber <= 10 Then
'All pass verification, Do nothing
Else
'Point out the wrong value
row.Cells("F3").Style.BackColor = Color.Red
End If
Else
' MessageBox.Show("Not a number!")
End If
Next
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
If e.ColumnIndex = 0 AndAlso Not DataGridView1.Rows.Item(e.RowIndex).IsNewRow Then
Dim value As String = e.FormattedValue.ToString()
Dim numericValue As Integer
With DataGridView1.Rows.Item(e.RowIndex).Cells.Item(e.ColumnIndex).Style
If Integer.TryParse(e.FormattedValue.ToString, numericValue) AndAlso numericValue >= 0 AndAlso numericValue <= 10 Then
.BackColor = Color.White
.ForeColor = Color.Black
Else
.BackColor = Color.Red
.ForeColor = Color.White
End If
End With
End If
End Sub