在焦點轉換到壹個(第二個)控件之前發生,此時該控件的 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事件才發生。