【问题标题】: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 吓到了。我无论如何都找不到通过数字索引来引用它们,只能通过名称,但请尝试我的答案。

标签: vba indexing focus


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2011-01-31
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多