2015-12-03 34 views
1

我在這裏想要做的是通過不同的控件循環,如果任何控件獲得焦點來禁用按鈕。這是一個循環,我用了一個任務,所以我還挺立足它關閉這個...基於哪個控件擁有焦點的禁用/啓用按鈕

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 

我沒有在一個陣列使這些文本框,我不想經歷每個文本框看看是否有焦點並做任何事情。請看一下。

回答

1

在vb6中,只有一個控件可以有焦點:ActiveControl,所以循環和詢問控件是否有焦點沒有意義。

如果您需要根據一定的控制具有特定名稱是否具有焦點,你可以做到這一點做一些事情:

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

如果你需要基於任何文本框是否有重點做到這一點:

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

您可以按照this SO Post中的建議進行文本框的子類化。

正如帖子所示,您必須爲每個有此要求的表單執行此練習。我認爲,從你的帖子中,你必須只爲一種形式。