我在这里学编程 索引篇 共55页[1 2 3 4 5 6 7 > » <... 最后一页]

焦点事件

_GotFocus(

当对象获得焦点时产生该事件;获得焦点可以通过诸如 TAB 切换,或单击对象之类的用户动作,或在代码中用 SetFocus 方法改变焦点来实现。

语法:
Private Sub Form_GotFocus( )
Private Sub object_GotFocus([index As Integer])

index 一个整数,用来唯一地标识一个在控件数组中的控件。

说明:
通常,GotFocus 事件过程用以指定当控件或窗体首次接收焦点时发生的操作。例如,通过给窗体上每个控件附加一个 GotFocus 事件过程,就可以显示简要说明或状态条信息给外界提供指导。根据获取焦点控件的不同,通过使其有效、禁止或者是显示其它控件的方式,也可以提供出可视的提示。

注意 一个控件仅当其 Enabled 和 Visible 属性都设置为 True 时才能接收焦点。为了移动焦点,在 Visual Basic 中要自定义键盘接口,对于窗体上的控件需设置 Tab 键顺序或指定访问键。

例:本例在 OptionButton 组中的一个按钮得到焦点时显示一个状态栏信息。要尝试这个例子,可将代码粘贴到一个包含 2 个 OptionButton 控件和 1 个 Label 的窗体的声明部分。将两个 OptionButton 控件的 Name 属性都设置为 OptionGroup,然后按 F5 键并单击 OptionButton 控件。

Private Sub Form_Load ()
Label1.AutoSize = True
End Sub

Private Sub OptionGroup_GotFocus (Index As Integer)
Select Case Index
Case 0
Label1.Caption = "Option 1 has the focus."
Case 1
Label1.Caption = "Option 2 has the focus."
End Select
End Sub

Private Sub OptionGroup_LostFocus (Index As Integer)

Label1.Caption = ""

End Sub

_LostFocus(

此事件是在一个对象失去焦点时发生,焦点的丢失或者是由于制表键移动或单击另一个对象操作的结果,或者是代码中使用 SetFocus 方法改变焦点的结果。

语法:
Private Sub Form_LostFocus( )

Private Sub object_LostFocus([index As Integer])

index 一个整数,它用来唯一地标识一个在控件数组中的控件。

说明:
LostFocus 事件过程主要是用来对更新进行验证和确认。使用 LostFocus 可以在焦点移离控件时引进确认。这类事件过程的另一种用途与在 GotFocus 事件过程中的应用类似,可以隐藏、显示其它对象或者使它们有效或无效。也可使设置在该对象的 GotFocus 事件过程中的条件取反或对其进行更改。

如果由 Visual Basic 所建立的 .exe 文件要显示一个由也是用 Visual Basic 所建立的 .dll 文件所创建的对话框,则该 .exe 文件的窗体将得到 Deactivate 和 LostFocus 事件。这可能是不希望的,因为对话框将不能获得 Deactivate 事件:

如果该对象是进程外的部件。


如果该对象不是用 Visual Basic 编写成。


在开发环境中当调用一个用 Visual Basic 所建立的 DDL 时。

例:本例演示了在 TextBox 获得或失去焦点(用鼠标或 TAB 键选择)时,改变颜色,并在 Label 控件中显示适当的文字。

要尝试这个例子,可将代码粘贴到一个 包含 2 个 TextBox 控件和一个 Label 的窗体声明部分,然后按 F5 键并在 Text1 和 Text2 之间移动焦点。

Private Sub Text1_GotFocus ()
' 将焦点用红色显示.
Text1.BackColor = RGB(255, 0, 0)
Label1.Caption = "Text1 has the focus."
End Sub

Private Sub Text1_LostFocus ()
' 用蓝色显示失去焦点.
Text1.BackColor = RGB(0, 0, 255)
Label1.Caption = "Text1 does’t have the focus。"
End Sub

_Validate(

在焦点转换到一个(第二个)控件之前发生,此时该控件的 CausesValidation 属性值设置为True。

语法:
Private Sub object_Validate(KeepFocus As Boolean)

KeepFocus 确定控件是否失去焦点的值。KeepFocus设置为True时,控件保持焦点。

说明:
Validate 事件和CausesValidation 属性协同工怍,防止控件失去焦点直到满足确定的准则。

重点 只有在即将获得焦点的控件的CausesValidation属性值设置为True时,Validate事件才发生。

例:该示例使用三个控件来示范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

 

 

我在这里学编程 索引篇 共55页[1 2 3 4 5 6 7 > » <... 最后一页]