2

我想创建一个处理程序,它在使用 VB6 时为所有人侦听GetFocus/事件,我该如何实现?LostFocusTextBoxesForm

到目前为止我尝试了什么:

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

但这仅适用TextBoxForm

4

1 回答 1

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

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

于 2013-10-24T15:01:14.787 回答