【问题标题】:Removing focus from subForm on a mainForm in Access在 Access 中的 mainForm 上从 subForm 中移除焦点
【发布时间】:2015-09-02 08:09:17
【问题描述】:

我有一个非常令人沮丧的问题。基本上我在数据表视图中有一个带有 3-4 个子表单的 mainForm。在选择记录并将其设置为 mainForm 上的控件后,从 subForm 中删除焦点的通用方法是什么?

我试过了: 当前事件:

Me.Parent.Form.SetFocus
Me.Parent.[Control].SetFocus

它的工作时间只有一半。但是,问题是,当用户通过单击子表单中的某个字段来选择记录时。然后highlightedfields 是A)子表单中的字段,B)主表单中的字段。看似随意的决定。

如何在其他地方设置新焦点之前从子窗体中完全取消/移除焦点?

【问题讨论】:

  • 由于您只选择一条记录,您可以禁用记录上的所有控件 - 然后它们无法获得焦点。
  • 如果我禁用记录上的所有控件,我无法通过单击禁用的控件来选择记录。这意味着选择记录的唯一方法是在数据表视图中单击记录的左角 - 非常笨拙。现在我的解决方法已经足够了。在这种情况下,我不得不做额外的工作来尝试找到解决方法,这让我很恼火(如果出现这种问题,我想找出常规的方法)。

标签: ms-access


【解决方案1】:

那就是将焦点移到父窗体上的控件上:

Me.Parent!SomeControl.SetFocus

【讨论】:

  • 那应该达到与Me.Parent.[Control].SetFocus相同的结果吗?正如我所说,这不是预期的结果。
  • 您可能需要将呼叫转移到另一个事件。
  • 调用是正确的事件,我通过使我的字段看起来像超链接的解决方法解决了它,因此当用户单击超链接时,它会触发OnClick Event,然后设置正确的焦点。问题是(在使它看起来像超链接之前)如果使用可以单击该字段,有时鼠标(焦点)会停留在那里(即它闪烁到正确的位置然后返回)。这是 50/50 的机会,几乎是焦点停留的地方。
  • 没有正确或不正确的事件。其他选项是 OnEnter 和 GotFocus。
  • 问题不在于事件本身。问题是焦点一次停留在两个地方(有点)。它停留在子窗体中的current record 中,然后转到主窗体中的control。问题是它是随机决定的(看似)最终哪个才是真正的焦点。
【解决方案2】:

最终为我解决了这个特殊问题的解决方法是使子表单中的字段看起来像一个超链接(即用户可以“点击”它)。

然后创建一个OnClick Event 设置正确的焦点,即:

Public Sub [Field]_Click()
On Error GoTo Goto_Err

    'some other code
    Me.Parent.[Control].SetFocus

Goto_Exit:
    Exit Sub

Goto_Err:
    MsgBox Error$
    Resume Goto_Exit
End Sub

这种解决方法并不理想,因为用户必须单击字段本身,而不是简单地通过按向上/向下箭头移动到另一条记录。

【讨论】:

  • 它没有任何影响。这是可行的解决方案,或者更确切地说,不是完全理想的解决方法。
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多