我正在使用VB.Net 2008并尝试使用某些值来验证某个单元格,如:
在DataGridView1中,我想检查第1列和单元格1中输入的数据是否小于10或者不是,所以我使用了以下代码
Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
If DataGridView1.CurrentCell.ColumnIndex = 1 Then
If DataGridView1.Rows(e.RowIndex).Cells(1).Value < 10 Then
DataGridView1.Rows(e.RowIndex).ErrorText = "Not Less Than 10"
e.Cancel = True
End If
End If
End Sub
问题是:每当我尝试在此单元格中输入任何值时,它都看不到任何内容(空值),除非它在我开始编辑它之前已经有一个值并始终使用此值而不管任何新值我写
那么如何验证这些单元格不允许用户离开此单元格,除非它获得正确的值
注意:CellValidated工作正常,但没有e.cancel来阻止用户离开此单元格
答案 0 :(得分:0)
我知道这很旧,但是为了验证实际值,您需要使用DataGridView1.Rows(e.RowIndex).Cells(1).FormattedValue
,它将为您提供修改后的值。通过使用DataGridView1.Rows(e.RowIndex).Cells(1).Value
,您将始终获得先前的值(未经编辑,如果单元格是首次编辑的,您将获得看到的空值)。请注意,FormattedValue仅在CellValidating方法中有效。
希望这对通过此问题的人有所帮助。 ^^