求助:VB.NET中关于Validating和Validated的区别问题

yhj8848 2012-01-24 11:18:09
本人最近学习VB.NET,当看到textbox文本框Validating和Validated这两个事件时,有点懵了,首先,这个两个的我是理解的,Validating验证事件在控件具有焦点,以及从该控件移动到Causesvalidation=true的另一个控件时发生。而Validated事件则在焦点成功离开控件后激活。我感觉这两个事件在效果上来说没什么区别,说区别的话就是激发先后顺序的问题,而且是紧跟的,但是这两个事件的功能我个人好像感觉没什么两样,我想听听各位高手是怎么看这两个验证事件的。大家一般是在什么情况下酌情选择这两个事件中的一个的。
下面我简单编了一个例子,分别是两个文本框,一个使用Validating事件,另一个使用Validated事件分别对文本框内输入的内容是否在数字进行验证。运行后两个文本框验证的效果都是一样的:
----------------------------------------------------------------------------------------------------------
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If IsNumeric(TextBox1.Text) Then

Else
MsgBox("输入的不是数字")
End If

End Sub
----------------------------------------------------------------------------------------------------------
Private Sub TextBox2_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Validated
If IsNumeric(TextBox1.Text) Then

Else
MsgBox("输入的不是数字")
End If
End Sub
...全文
623 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
苦苦的潜行者 2012-01-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

其实你看一下msdn:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.validating(v=vs.100).aspx#Y0

它也许有一点说得含糊,不过仔细看还是很容易看出区别。比如说,当提交操作首先验证时“CancelEventArgs 的 Cancel 属性设置为 true”,则自动取消随后的V……
[/Quote]

学习.
yhj8848 2012-01-26
  • 打赏
  • 举报
回复
楼上,我明白一点你的意思了,意思说我虽然用msbox进行了提示,但是还是照样能过了,实际上就失去意思了是不是,所以当验证不对,我得使用e.Cancel=true使其不能通过,也就不能激发Validated事件,Validating的作用我基本上也明白了,那你说Validated是用来重写验证通过后的有关通知的,这个Validated能不能跟一下它的作用
  • 打赏
  • 举报
回复
其实你看一下msdn:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.validating(v=vs.100).aspx#Y0

它也许有一点说得含糊,不过仔细看还是很容易看出区别。比如说,当提交操作首先验证时“CancelEventArgs 的 Cancel 属性设置为 true”,则自动取消随后的Validated事件,这样也就不会提交了。

而你的代码仅仅MsgBox,显然没有按照Validate的编程协议去设计代码。
  • 打赏
  • 举报
回复
Validating是用来重写验证方法的,Validated是用来重写验证通过后的有关通知的。假设验证不通过(Cacel=true),就根本不会触发Validated。

你只是在Validating中弄个MsgBox,即使名义上验证失败,可是你还是让验证通过了。那么许多.net的与Validating协调的机制也就根本无法正常执行。

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧