【问题标题】:Disable/Enable button based on which control has focus禁用/启用按钮基于哪个控件具有焦点
【发布时间】:2015-12-03 23:39:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: textbox vb6 focus


    【解决方案1】:

    在 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-14
        • 2012-11-28
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多