2

我有一个执行长时间操作的 VB6 应用程序。假设,保存到数据库需要超过 1 分钟。

虽然此节省持续,但我希望我的窗口被锁定(禁用)并显示沙漏光标。

但是下一个代码不会这样做:

Private Sub Update_Click()
    Screen.MousePointer = vbHourglass
    Me.MousePointer = vbHourglass
    Me.Enabled = False
    'This takes more than minute:
    Update
    Me.MousePointer = vbDefault
    Screen.MousePointer = vbDefault
    Me.Enabled = True
End Sub

即表单仍然启用,没有沙漏光标。如果我想对形式做任何事情,它就会挂起。

任何想法如何使应用程序对用户友好并让用户知道该应用程序在按下按钮后执行某些操作?

不幸的是,我只能使用 VB6,所以我不能使用后台工作人员。

注意:在 Win7 计算机中,相同的代码使光标沙漏,因此用户看到该应用程序正在做某事。在 XP 系统中,应用程序只是挂起,光标没有任何反应。

4

2 回答 2

0

您应该在更新之前添加 DoEvents,以便 Windows 窗体可以将窗体更新到其新状态。

DoEvents 使窗口有时间处理未决事件。

于 2013-10-21T10:53:02.523 回答
0

尝试添加Me.RefreshMe.Enabled = False

这将强制表单处理任何未完成的事件

于 2013-10-21T13:11:06.240 回答