处理表单VB6中所有TextBox上的GotFocus / LostFocus事件

时间:2013-10-24 11:46:40

标签: vb6 focus handler

我想创建一个处理程序,使用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

1 个答案:

答案 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中消失了。有一些等效的方法,但我不会太依赖它们的工作方式。

对于更复杂的操作,几个事件可以调用将控件作为参数传递的公共过程。