有关如何避免渲染此表单的长时间延迟的任何建议吗?
我的用户表单标签上写着“请稍候,下载”,没有其他控件。当用户请求数据下载(异步API请求)时,我关闭键盘输入,并显示“请稍候”表单。处理数据的回调重新启用键盘输入并隐藏表单。奇迹般有效。
除之外,它最初会弹出一个空白的白色矩形,然后需要几秒钟(最多5个)来绘制。我的其他用户形式(模态,用于数据输入)立即被绘制我甚至从未注意到它们开始是白色的。
以下是我在发出异步数据请求之前显示表单的方法:
' Deactivate the keyboard.
Application.OnKey "^d", "KeyboardOn"
Application.DataEntryMode = True
' Display the splash form non-modally.
ssiWaitDialog.TaskDone = False
ssiWaitDialog.Show False
以下是它在回调中的删除方式:
' Close the splash form.
ssiWaitDialog.TaskDone = True
ssiWaitDialog.Hide
' Re-activate the keyboard.
Application.DataEntryMode = False
这是表单代码:
' Set true when the long task is done.
Public TaskDone As Boolean
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = Not TaskDone
End Sub
问题表单的属性值仅与我的其他表单modal = false显着不同,我将光标设置为沙漏。不太重要的区别是高度/宽度和标签字体大小。
答案 0 :(得分:2)
在show方法调用之后添加'DoEvents'修复了问题。以下是show form代码现在的读取方式:
' Deactivate the keyboard.
Application.OnKey "^d", "KeyboardOn"
Application.DataEntryMode = True
' Display the splash form non-modally.
ssiWaitDialog.TaskDone = False
ssiWaitDialog.Show False
DoEvents