将焦点从子表单移动到主表单

时间:2009-07-13 12:51:57

标签: ms-access

我有主要形式MAINF和两个子形式SUBONE和SUBTWO

我希望能够在它们之间移动焦点(光标)。

从MAINF到SUBONE或SUBTWO,我可以给我打电话![SUBONE] .SetFocus或Me![SUBTWO] .SetFocus。这似乎有效。

但是:

1)从SUBONE到SUBTWO,我不知道。以编程方式移动焦点的正确方法是什么?

2)从SUBONE到MAINF的控制之一说“客户ID”,我该怎么做?

编辑:这是 rtochip 提供的代码。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyF5
            Me.Parent![Item - Order Subform].SetFocus
            DoCmd.GoToControl "Supplier ID NUM"
        Case vbKeyF6 
            Me.Parent.[Item ID].SetFocus
    End Select
End Sub    

1 个答案:

答案 0 :(得分:1)

如果SUBTWO是SUBONE的孩子,那么它也是一样的。但是,如果他们是兄弟姐妹,那么你必须先将它作为父母的对象引用。

有两种方法可以在父级上引用对象:

  1. 您可以参考父母 Me.Parent.[Customer ID].SetFocus
    (顺便说一句,将控件的名称更改为Customer_ID - 使其更易于使用,并且您不需要[])

  2. 您可以直接引用它 Forms!MAINF.[Customer ID].SetFocus

  3. 更新:KeyDown事件可能稍后在主窗体上被捕获。在完成移动焦点之前,您可以随时清除它。

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
        Select Case KeyCode
            Case vbKeyF5
                Me.Parent![Item - Order Subform].SetFocus
                DoCmd.GoToControl "Supplier ID NUM"
                KeyCode = 0  'Trap F5
            Case vbKeyF6
                Me.Parent.[Item ID].SetFocus
                keyCode = 0  'Trap F6
        End Select
        'keyCode = 0    'Note: you can't do it here because it will trap ALL your
                        'KeyCodes. Not just F5 and F6.
    End Sub