根据哪个控件具有焦点来禁用/启用按钮

时间:2015-12-03 23:39:35

标签: textbox vb6 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

我没有在数组中创建这些文本框,我不想通过每个文本框来查看是否有焦点并做任何事情。请看一下。

2 个答案:

答案 0 :(得分:1)

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

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

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

如果您需要根据任何 TextBox是否具有焦点来执行此操作:

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

答案 1 :(得分:0)

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

正如帖子建议的那样,你必须为你有这个要求的每个表格做这个练习。我想,从你的帖子中你必须只为一个表格做。