【发布时间】:2022-07-20 04:32:25
【问题描述】:
访问 2016-2019。我有一个带有 MyTextbox 的表单和带有一个 GotFocus 事件的 MyCombobox。 当光标在 MyTextbox 上并单击 MyCombobox 时,我希望在 while 循环(2 秒)期间出现沙漏,但光标仍作为指针。为什么?有没有其他方法可以完成同样的事情?
Private Sub MyCombobox_GotFocus()
DoCmd.Hourglass True ' or Screen.MousePointer = 11
DoEvents
DoCmd.Hourglass True ' or Screen.MousePointer = 11
Debug.Print "A"
Dim i As Long
For i = 1 To 2000000000: Next i ' Do some heavy stuff for about 2 seconds
Debug.Print "B"
DoCmd.Hourglass False
End Sub
【问题讨论】:
-
DoEvents将允许其他代码设置光标。 -
即使我在
DoEvents之后重复DoCmd.Hourglass True也没有沙漏(或删除DoEvents) -
不要为了等待 2 秒而烧掉你的 CPU 循环 20 亿次 - 你可以添加一个原生的
Sleep()方法到你的 VBA 项目中。另外,在按钮Click()事件中尝试上面的代码,看看它是否有效。 -
不要这样做。永远不要让用户无所事事。
-
用户没有等待“无”。用户正在等待沙漏出现。运行该应用程序的唯一用户是我自己。我为什么不让自己等两秒钟等待沙漏呢?
标签: vba ms-access-2016