Disable/Enable 基于哪个控件具有焦点的按钮

Disable/Enable button based on which control has focus

我在这里尝试做的是遍历不同的控件,如果有任何控件获得焦点以禁用按钮。这是我用于另一项任务的循环,所以我有点以此为基础...

Dim cControl As Control

For Each cControl In Me.controls
    If Not cControl.Container Is framClient Then
        If Mid(cControl.Name, 1, 3) = "txt" Or Mid(cControl.Name, 1, 3) =  "msk" Or Mid(cControl.Name, 1, 3) = "cbo" Then
       'WHAT I'm trying to do here is
       'if cControl.gotfocus then
           'cmdExit.enabled=false  
       'end if ' but it barks at me   
       'cControl.Enabled = False
        End If
    End If
Next

我没有在数组中制作这些文本框,我不想遍历每个文本框以查看是否获得焦点并执行任何操作。请看一下。

您可以继续按照 this SO Post 中的建议对文本框进行子类化。

正如 post 所建议的那样,您必须对每个有此要求的表格进行此练习。我认为,从您的 post 来看,您只需要为一种形式执行此操作。

在 vb6 中,只有一个控件可以具有焦点:ActiveControl,因此循环并询问控件是否具有焦点是没有意义的。

如果您需要根据具有特定名称的特定控件是否具有焦点来执行某些操作,您可以这样做:

cmdExit.Enabled = (Me.ActiveControl.Name = "MyTextBox")

如果需要根据anyTextBox是否有焦点来做:

If TypeOf Me.ActiveControl Is TextBox Then
  cmdExit.Enabled = false
Else
  cmdExit.Enabled = true
End If