ValidateEdit

结束编辑单元格前执行,通常用于验证输入的内容。

e参数属性:

Table:  所编辑的表
Row:    所编辑的行
Col:    所编辑的列
Text:   字符型,表示所输入的文本内容
Cancel: 逻辑型,设为True表示无法通过验证,禁止退出编辑模式。

ValidateEdit和DataColChanging有些类似,但是ValidateEdit针对的是输入验证,而DataColChanging使用范围更广,因为任何形式导致的数据变动,包括输入以及通过代码设置,都会触发DataColChanging事件。 所以实际开发的时候,最好用DataColChanging事件,除非你的代码仅仅用于输入验证。

我们先来看看ValidateEdit事件是如何进行输入验证的。

假定在订单表中输入数据,要求折扣不能大于0.15,代码非常简单,在订单表的ValidateEdit事件中输入:

If e.Col.Name = "折扣" Then '如果正在输入的是折扣列
    If e.Text > "" Then '如果已经输入内容
       
Dim v As Double = Val(e.Text) '将输入的内容转换为数值
       
If v > 0.15 Then '如果输入的值大于0.15
            e.Cancel =
True '则禁止退出编辑模式
       
End If
   
End If
End
If

上面的代码首先判断在折扣列 输入的内容是否大于0.15,如果是,则禁止退出编辑模式,除非你修改折扣值直到符合要求,或者按Esc键退出编辑。

如果你想幽默一点、友善一点,可以加上提示:

If e.Col.Name = "折扣" Then '如果正在输入的是折扣列
   
If e.Text > "" Then '如果已经输入内容
        Dim v As Double = Val(e.Text)
        If
v > 0.15 Then '将输入的内容转换为数值
            MessageBox.Show(
"兄弟,你想老板破产吗?", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e.Cancel =
True '则取消输入
       
End If
    End
If
End
If

再例如只允许输入10天内的日期,则可以将ValidateEdit事件可以设为:

If e.Col.Name = "日期" Then
    If
e.Text > "" Then
        Dim
v as Date = CDate(e.Text)
        If
(Date.Today - v).TotalDays > 10 Then
            e.Cancel =
True
        End
If
    End
If
End If

一旦将e.Cancel参数设为True,你将无法退出编辑状态,直到重新输入符合要求的数据,或者按Esc键撤销此次编辑。

利用ValidateEdit事件,也可以实现代码录入:

If e.Col.Name = "产品" Then
    If
e.Text = "tv" Then
        e.Text =
"电视机"
   
ElseIf e.Text = "tel"
        e.Text =
"电话机"
   
End If
End
If

设置上述代码后,如果你在产品列输入tv,将自动替换为电视机,如果输入tel,自动替换为电话机。
例子很简单,实际应用的时候,希望你能举一反三。


本页地址:http://www.foxtable.com/webhelp/topics/0617.htm