如何确定哪个子窗体有焦点
Posted
技术标签:
【中文标题】如何确定哪个子窗体有焦点【英文标题】:How to determine which subform has focus 【发布时间】:2014-08-26 16:54:53 【问题描述】:我有一个包含多个子表单的表单。在其中一个子表单上,如果您单击另一个子表单(您完成了控件,如果有任何更改必须更新),我需要运行更新查询。这部分效果很好。我遇到的麻烦是,我不想每次单击任何子表单时都运行更新(它是一个更新查询循环),从而使一切陷入困境。
如果您在一个非常特定的子表单 (PageIndex 2) 上,那么它应该运行更新。下面是我必须确定我在哪个选项卡/页面/子表单上的代码。 PlanSpecs 是页面的名称。
问题是,无论我当前在哪个选项卡上,如果总是说“我在那个子表单上”。知道为什么会这样,或者对我能做什么有任何建议吗?
If (Me.PlanSpecs.PageIndex = 2) Then
MsgBox ("I'm on that subform")
Else
MsgBox ("Different Subform, move along")
End If
【问题讨论】:
这是在 TabControl 中吗?如果是这样,并且 PlanSpecs 是控件,看起来你可以这样做if me.parent!PlanSpecs.value = 2 then
from here
我在主窗体上有标签,当您单击标签时,它会激活关联的子窗体。当我尝试您提供的代码时,它说“您输入的表达式对 Parent 属性的引用无效”
这是有道理的。我被那个属性 PageIndex 吓到了。我无论如何都找不到通过数字索引来引用它们,只能通过名称,但请尝试我的答案。
【参考方案1】:
我认为您不能通过该索引引用它们,除非它们位于选项卡控件中,否则您将拥有 PageIndex 属性。
你也可以这样做,
If (Screen.ActiveControl.Parent.Name = "SubFormNameHere") Then
MsgBox ("I'm on that subform")
Else
MsgBox ("Different Subform, move along")
End If
但此代码可能需要附加条件,例如,如果您将选项卡控件添加到该子窗体,那么它将返回 TabControl 的名称而不是父(窗体)。
对于additional reference
【讨论】:
以上是关于如何确定哪个子窗体有焦点的主要内容,如果未能解决你的问题,请参考以下文章