我有主要形式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
答案 0 :(得分:1)
如果SUBTWO是SUBONE的孩子,那么它也是一样的。但是,如果他们是兄弟姐妹,那么你必须先将它作为父母的对象引用。
有两种方法可以在父级上引用对象:
您可以参考父母
Me.Parent.[Customer ID].SetFocus
(顺便说一句,将控件的名称更改为Customer_ID - 使其更易于使用,并且您不需要[])
您可以直接引用它
Forms!MAINF.[Customer ID].SetFocus
更新: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