【发布时间】:2017-11-07 11:26:44
【问题描述】:
我正在开发一个 MS 访问数据库 (2016)。
我有一个主窗体(名为 MF),其中包含大量控件,包括一个子窗体。这个子窗体名为 SF,它与 MF 上的两个控件相关。这些控件名为 C1 和 C2。
MF 加载时,SF 不可见。
当 C1 或 C2 获得焦点时,SF 可见性设置为 True。
现在我需要的是:
1- 一旦 C1 或 C2 失去对其他控件的关注,将 SF 可见性设置为 False SF 除外。
2- 将 SF 可见性设置为 False 一旦它失去对 MF 上除 C1 和 C2。
一开始看起来很简单,看起来很直接,但事实并非如此。
我用过:
Private Sub C1_GotFocus()
Me.SF.Visible = True
End Sub
Private Sub C2_GotFocus()
Me.SF.Visible = True
End Sub
Private Sub C1_LostFocus()
Me.SF.Visible = False
End Sub
Private Sub C2_LostFocus()
Me.SF.Visible = False
End Sub
Private Sub SF_LostFocus()
Me.SF.Visible = False
End Sub
现在,如果 C1 或 C2 失去对 SF 的控制,它就会消失,我无法为 C1 选择所需的信息strong> 和 C2。
此外,如果 SF 失去 C1 和 C2 的焦点,它确实会消失
用几个 if 语句似乎很容易解决这个问题,但事实并非如此。
问题在于LostFocus() 事件无法预测获得焦点的新控件。因此,很难做到这一点。
我在网上搜索了一个解决方案,但没有找到我可以使用的东西。
一种解决方法是省略 C1、C2 和 SF 的 LostFocus() 事件,并在 上设置所有其他单个控件>MF 获得焦点以隐藏 SF。
虽然这可以满足我的需要,但它似乎不是一个实用的解决方案。
有没有更直接、更合理的方法来实现这一点?
请记住,主窗体有太多控件,无法以这种方式编码。
谢谢。
【问题讨论】:
标签: forms ms-access lost-focus