如何在子窗体中获取焦点的控件



Ms-access VBA在me.myControl具有焦点并且我尝试设置时引发错误

me.myControl.visible=false 

所以我使用 Screen.ActiveControl 来确定 myControl 是否具有焦点:

if me.myControl.name = Screen.ActiveControl.name then
    me.otherControl.SetFocus
end if
me.myControl.visible=false 

不幸的是,似乎每个子窗体都可以有自己的"主动控制"。我没有找到一种方法来弄清楚它是哪一个。所以我必须做这个解决方法:

on error goto setMyfocus
me.subform.Form!myCtrlInSubform.visible = false
exit function
setMyfocus:
me.subform.Form!otherCtrlInSubform.SetFocus
me.subform.Form!myCtrlInSubform.visible = false
exit function

显然这不是一个好的解决方案。那么有没有办法在不引发错误的情况下确定子窗体中的哪个控件具有焦点?

试试:

' It's my main form:
If Screen.ActiveForm.Name = "YourFormName" Then
  ' And it's my subform:
  If Forms!YourFormName.ActiveControl.Name = "subform" Then
    ' And it's my control in subform:
    If Screen.ActiveControl.Name = "myCtrlInSubform" Then
      Me.subform.Form!otherCtrlInSubform.SetFocus
      Me.subform.Form!myCtrlInSubform.Visible = False
    End If
  End If
End If

最新更新