| 发表于:2007-03-03 00:40:412楼 得分:5 |
网上资料: validate事件 在焦点转换到一个(第二个)控件之前发生,此时该控件的 causesvalidation 属性值设置为true。 语法 private sub object_validate(keepfocus as boolean) validate事件、 causesvalidation属性示例 该示例使用三个控件来示范validate 事件和causesvalidation 属性的使用。在缺省情况下,两个textbox 控件的causesvalidatio n属性设置为 true,这样当您想把焦点从一个textbox转换到另一个时,validate 事件发生。如果 text1没有包含日期或 text2没有包含一个大于10的数字,焦点的转换将被阻止。由于 command1控件的causesvalidation 属性设置为 false,因此您无论何时都可以单击help 按钮。 要试验该示例,在窗体中放置一个commandbutton 和两个textbox 控件,将代码粘接到窗体的“声明”部分并运行此工程。按tab 键尝试转换焦点。 private sub form_load() '设置按钮的causesvalidation属性为false。当用户 '单击按钮时,validate事件不发生。 '设置按钮的caption属性为“帮助”。 with command1 .causesvalidation = false .caption = "help " end with show with text1 '选择text1的文本并为它设置焦点。 .sellength = len(text1.text) .setfocus end with end sub private sub command1_click() '当单击此按钮时给出用户帮助信息。 msgbox _ "text1 must be set to a date. " & vbcrlf & _ "text2 must be a number less than 10. " end sub private sub text1_validate(keepfocus as boolean) '如果值不是一个日期,则保持焦点,除非用户 '单击help。 if not isdate(text1.text) then keepfocus = true msgbox "please insert a date in this field. ", , "text1 " end if end sub private sub text2_validate(keepfocus as boolean) '如果值是一个大于10的数字,保持焦点。 if not isnumeric(text2.text) or val(text2.text) > 10 then keepfocus = true msgbox _ "please insert a number less than or equal to 10. ", , "text2 " end if end sub validate事件语法包含下面几部分: 部分 描述 object 一个对象表达式,其值为“应用于”列表中的一个对象。 keepfocus 确定控件是否失去焦点的值。keepfocus设置为true时,控件保持焦点。 说明 validate 事件和causesvalidation 属性协同工怍,防止控件失去焦点直到满足确定的准则。 重点 只有在即将获得焦点的控件的causesvalidation属性值设置为true时,validate事件才发生。 | | |
|