ValidateEdit事件中的说明如下: ValidateEdit和DataColChanging有些类似,但是ValidateEdit针对的是输入验证,而DataColChanging使用范围更广(言下之意包括了输入验证),因为任何形式导致的数据变动,包括输入以及通过代码设置,都会触发DataColChanging事件。所以实际开发的时候,最好用DataColChanging事件,除非你的代码仅仅用于输入验证。
我的理解是:DataColChanging可以替代ValidateEdit。但以下两段最常用的代码(整数列输入小数时自动取整功能)结果却完全不一样,难道是我的代码有问题吗?请指教。谢谢!
ValidateEdit事件中的下列代码执行结果是正确的:
Dim dc As DataCol = e.Col.DataCol
If dc.IsNumeric Then
Dim v1 As Decimal
If e.Text > "" Then
v1 = val(e.Text)
Else
Return
End If
If dc.Datatype.name = "Int32" then
If v1 > 2.1E9 Then
e.Cancel = True
ElseIf v1 < -2.1E9 Then
e.Cancel = True
ElseIf v1 <> cint(v1) Then
e.text = cint(v1)
End If
End If
End if
DataColChanging事件中的下列代码执行结果是错误的,小数(如1.1)被清空,但整数(如1)有效:
Dim dc As DataCol = e.DataCol
If dc.IsNumeric Then
Dim v1 As Decimal
If e.NewValue <> 0 Then
v1 = e.NewValue
Else
Return
End If
If dc.Datatype.name = "Int32" Then
If v1 > 2.1E9 Then
e.Cancel = True
ElseIf v1 < -2.1E9 Then
e.Cancel = True
ElseIf v1 <> cint(v1) Then
e.NewValue = cint(v1)
End If
End If
End If
[此贴子已经被作者于2019/8/7 20:45:59编辑过]