1

我有一个可能需要一些时间才能执行的功能。

如何在函数开始时显示一个小的模态表单,该表单在函数完成时关闭?

4

3 回答 3

2

我最喜欢的技巧是将运行的代码放入运行时显示的表单中。然后当它完成后调用 Unload Me

'Code in Form1
Call frmWait.Show(vbModal, Me)

'Code in frmWait
Private Sub Form_Activate()

    'Do some work ...

    Unload Me

End Sub
于 2012-11-21T22:58:30.087 回答
2

假设 frmModal 是您希望显示的形式。在你的函数开始时放入

frmModal.Show
frmModal.refresh

在你的函数结束时放入

Unload frmModal
于 2012-11-20T23:17:38.610 回答
1

当您加载表单模式(form1.show vbmodal)时,在模型表单关闭之前不会执行后续代码

模拟您想要的一种简单方法(没有 api)是无模式显示表单,并临时禁用其他表单

在以下测试项目中查看 command1 和 command2 之间的区别:

'3 forms :
'    Form1 : name=Form1
'        contains 2 command buttons with the name Command1 and Command2
'    Form2 and Form3 contain nothing special
Option Explicit

Private Sub Command1_Click()
  Dim lngEnd As Long
  Form3.Show vbModal
  lngEnd = Timer + 5
  Do While Timer < lngEnd
    Caption = CStr(Timer)
    DoEvents
  Loop
  Unload Form3
End Sub

Private Sub Command2_Click()
  Dim lngEnd As Long
  Enabled = False
  Form2.Show vbModeless, Me
  lngEnd = Timer + 5
  Do While Timer < lngEnd
    Caption = CStr(Timer)
    DoEvents
  Loop
  Enabled = True
  Unload Form2
End Sub
于 2012-11-21T07:30:13.263 回答