acDialog
和.PopUp
的一个小缺点是窗体在访问主窗口之外打开为窗口。这就是为什么如果可能的话我更喜欢使用.Modal
。
如果您只想阻止其他开放表单,您甚至可以暂时在表单的公开活动中执行Me.Modal = True
。
.Modal
的缺点是它不会等待。在表单关闭之前,DoCmd.OpenForm , , , , , acDialog
不会返回。这种同步呼叫有时可能非常有用。
做一个acDialog/PopUp
像呼叫保持内您可以使用表格内的小动作接入主窗口:
Private bFormOpen As Boolean
Public Sub ShowModal()
SetFocus ' Make the form visible
On Error GoTo ForcedClose
bFormOpen = True
Do While bFormOpen ' Wait until the form is closed
Sleep 50
DoEvents
Loop
ForcedClose:
Exit Sub
End Sub
Private Sub Form_Unload(Cancel As Integer)
bFormOpen = False
End Sub
您可以用比实例化的形式是这样的:
Dim f As New Form_Name
f.Modal = True
Call f.ShowModal
Set f = Nothing
实际上,使用acDialoog表示窗体是对话框,但不弹出。模态形式和对话形式之间有区别。而对话框形式和弹出窗体之间是有区别的(事实上,模型形式和弹出窗体也有很大不同!)。所以,一个模型形式是<>到对话框形式。弹出窗体是<>到模型窗体。他们每个人都有非常不同的行为和不同的使用案例。例如,弹出窗体可以显示在其他窗体的顶部,但不需要有焦点(因此弹出窗体通常用于向导窗体或帮助类型显示)。 –
如果你打算发表一个长话来纠正别人说的话,至少是对的。我没有试图说明模式和弹出窗口是同义词,我只是表示使用acDialog作为弹出窗口和模态打开。 [AcWindowMode枚举](http://msdn.microsoft.com/en-us/library/office/ff195725.aspx) –