首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

在文本框里使用xxx.SetFocus,怎么才能触发Validate事件

2012-01-02 
在文本框里使用xxx.SetFocus,如何才能触发Validate事件我在窗体里放置两个文本框(Text1和Text2),输入下面

在文本框里使用xxx.SetFocus,如何才能触发Validate事件
我在窗体里放置两个文本框(Text1和Text2),输入下面代码
Private   Sub   Text1_KeyPress(KeyAscii   As   Integer)
        If   KeyAscii   =   13   Then   Text2.SetFocus
End   Sub

Private   Sub   Text1_Validate(Cancel   As   Boolean)
        Debug.Print   "t1v "
End   Sub

但发现在Text1按回车,Text2倒是获取焦点,但并没有执行Text1_Validate里的语句,请问要如何才能触发Text1_Validate事件

不想用Text1_LostFocus,因为Text1_LostFocus没有Cancel

[解决办法]
将鼠标移走其他的地方点击。 如果想自己用代码进行判断,就不需要激发这个事件,直接在
If KeyAscii = 13 Then
'写自己的代码
end if

————————————————————————————————————
写作,虽然每个人都会查阅辞海,可,不是人人都能写出不朽的篇章的。编程,如是也。

[解决办法]
网上资料:

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事件才发生。

[解决办法]
我试验了一下,sstab肯定可以。是不是sstab的CausesValidation属性设置不正确?

热点排行