Ms access 从Access中主窗体的子窗体中删除焦点

Ms access 从Access中主窗体的子窗体中删除焦点,ms-access,Ms Access,我有一个非常令人沮丧的问题。基本上,我有一个主窗体,它有3-4个子窗体,都在数据表视图中。选择记录并将其设置为mainForm上的控件后,从子窗体中删除焦点的一般方法是什么 我试过: 当前事件: Me.Parent.Form.SetFocus Me.Parent.[Control].SetFocus 而且它有一半的时间是有效的。但问题是,当用户通过单击子窗体中的某个字段来选择记录时。然后高亮显示的字段要么是子窗体中的字段,要么是主窗体中的字段。似乎是随机决定的 在其他地方设置新焦点之前,如何完

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

我试过: 当前事件:

Me.Parent.Form.SetFocus
Me.Parent.[Control].SetFocus
而且它有一半的时间是有效的。但问题是,当用户通过单击子窗体中的某个字段来选择记录时。然后高亮显示的字段要么是子窗体中的字段,要么是主窗体中的字段。似乎是随机决定的


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

将焦点移动到父窗体上的控件:

Me.Parent!SomeControl.SetFocus

这个特殊问题的一个解决方法最终为我解决了,就是让子表单中的字段看起来像一个超链接,用户可以点击它

然后制作一个设置正确焦点的OnClick事件,即:

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

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

这将获得与Me.Parent.[Control].SetFocus相同的结果?正如我所说,这不是期望的结果。您可能必须将调用移动到另一个事件。调用是在正确的事件中,我通过一种使我的字段看起来像超链接的解决方法解决了这个问题,因此当用户单击超链接时,它会触发一个OnClick事件,然后设置正确的焦点。问题是在使其看起来像超链接之前,如果使用超链接,可以在字段内单击,有时鼠标焦点会停留在那里,即,它会闪烁到正确的位置,然后返回。这是50/50的机会,几乎是焦点所在。没有正确或错误的事件。其他的选择是OneNet和GotFocus。问题不在于事件本身。问题是焦点同时停留在两个地方。它保留在子窗体中的当前记录中,然后转到主窗体中的控件。问题是,它似乎是随机决定的,而这最终才是真正的焦点。它毫无影响。这是一个有效的解决方案,或者更确切地说,是一个不太理想的解决方案。由于您只选择了一条记录,您可以禁用该记录上的所有控件,这样它们就无法获得焦点。如果我禁用该记录上的所有控件,则无法通过单击禁用的控件来选择该记录。这意味着选择记录的唯一方法是在数据表视图中单击记录的左角-非常笨拙。现在我的解决方法已经足够了。在这种情况下,我不得不做额外的工作来寻找解决办法,如果出现这样的问题,我想找出常规的方法来解决,这让我很恼火。