我想创建一个处理程序,使用VB6监听GetFocus
中所有LostFocus
的{{1}} / TextBoxes
个事件,我该如何实现?
到目前为止我尝试了什么:
Form
但这仅适用于Option Explicit
Dim Cnt As Control
Private WithEvents Txt As VB.TextBox
Private Sub Form_Load()
For Each Cnt In Me.Controls
If TypeOf Cnt Is TextBox Then
Set Txt = Cnt
End If
Next Cnt
End Sub
Private Sub Txt_GotFocus()
Txt.BackColor = &H80000018
End Sub
Private Sub Txt_LostFocus()
Txt.BackColor = &H80000005
End Sub
TextBox
答案 0 :(得分:4)
this only works for one TextBox in the Form
因为Txt一次只能引用一个文本框。
拥有通用处理程序的一种方法是将Texboxes创建为控件数组。给他们所有相同的名字(即txtBox
)。 VB会自动生成一个数组。您可以使用Index属性控制数组中的顺序。现在,您的LostFocus
将如下所示:
Private Sub txtBox_LostFocus(Index As Integer)
txtBox(Index).Backcolor = &H80000005
End Sub
如果您需要根据WHICH文本框更改您的操作,请使用Index
来确定它是哪一个。注意:控件阵列非常方便,但它们在VB.NET中消失了。有一些等效的方法,但我不会太依赖它们的工作方式。
对于更复杂的操作,几个事件可以调用将控件作为参数传递的公共过程。