现在它被忽略了。这里的代码是最基本的代码,它会导致当前不可避免的情况,但我打算将这些情况排除在外。只需要让基本的setFocus工作。
Private Sub fieldbox_LostFocus()
Me.fieldbox.SetFocus
End Sub
以常规形式,它按预期工作。当fieldbox失去焦点时,焦点将重新设置为fieldbox。
以连续的形式,它不起作用,并且不会发生设定焦点。这可能是由于每个记录存在多个fieldbox实例。
我想要的是,如果连续表单上存在fieldbox1,2和3,并且您单击fieldbox2,我该如何将焦点设置回fieldbox2?
答案 0 :(得分:1)
您需要使用表单的BeforeUpdate()
事件而不是焦点:
Private Sub Form_BeforeUpdate(Cancel as Integer)
If RecordOK = False Then
Dim response, strMsg as String
strMsg = "There is data missing from the record. " _
& vbCrLf & "Press Yes to continue, editing. " _
& vbCrLf & "Press No to discard all changes."
Cancel = True
response = MsgBox(strMsg, vbYesNo)
If response <> vbYes
Me.Undo
End If
End If
以上代码未经过测试,可能需要一些调整,粘贴和查看。我最近的更新提供了更清晰的用户对对话框响应的处理。 (你确实设置了Option Explicit
,不是吗?!)
在控制级别找到此方法的一个很好的解释here。但您可能希望使用表单事件,如上所述。有时我只是暂时在事件中插入Msgbox
提示,以便我可以看到什么时候发射。
请注意,对话框应提供有关如何避免擦除用户到目前为止完成的工作的线索。