如何从导航子窗体中删除文本框焦点

时间:2016-09-12 15:17:47

标签: access-vba

我几天都在寻找这个问题的答案。我的主窗体“frmAddContact”带有导航子窗体,名为“NavigationSubform”。所有文本字段都通过在按钮下放置按钮并更改按钮OnGotFocus和OnLostFocus事件的可见性来添加发光效果。当我在主窗体上移动时,以及当我移动到子窗体时,所有工作都完美无缺,但是当我从子窗体移动到主窗体时出现问题 - 关注子窗体仍然存在,因此可以看到发光子形式和主要形式。

当我在主窗体中选择文本框时,如何删除焦点?

每个文本框都有以下代码:

Private Sub [TextBoxName]_GotFocus()
Glow Me.[TextBoxName], Me.[ButtonName], True
End Sub

Private Sub [TextBoxName]_LostFocus()
Glow Me.[TextBoxName], Me.[ButtonName], False
End Sub

Glow方法代码位于Module:

Sub Glow(ctlText As Control, ctlShadow As Control, TurnOn As Boolean)
If TurnOn = True Then
    ctlText.BorderColor = RGB(102, 175, 233)
    ctlShadow.Visible = True
Else
    ctlText.BorderColor = RGB(228, 228, 228)
    ctlShadow.Visible = False
End If
End Sub

两个带有发光Here

的文本框

1 个答案:

答案 0 :(得分:0)

我认为问题在于子窗体本身并没有真正失去焦点。您应该可以通过从主窗体的Textbox GotFocus事件中运行发光代码来强制移除光晕。

这有点棘手,但请查看许多有关从表单引用子表单的在线资源 <{3}}以

开头

规则是你基本上必须首先引用主窗体,然后是子窗体,然后是控件

如果在文本框获得焦点时执行此操作,则应清除子窗体控件的光晕

Private Sub [TextBoxName]_GotFocus()
   Glow Forms![frmAddContact]![NavigationSubform].Form.[TextBoxName], _   
        Forms![frmAddContact]![NavigationSubform].Form.[ButtonName], False
   Glow Me.[TextBoxName], Me.[ButtonName], True
End Sub