在 VBA 中的用户窗体上使用 DoEvents 比 Repaint 有什么好处?

发布于 2024-10-05 05:55:19 字数 128 浏览 6 评论 0原文

在 VBA 中的用户窗体上使用 DoEvents 比 Repaint 有什么好处? 是出于性能考虑,还是为了最大限度地减少屏幕闪烁等烦恼,或者是为了满足您需要更新的不仅仅是表单的情况?

从 VBA 角度寻找有关差异的一些说明。

What are the benefits to using DoEvents over Repaint on a userform in VBA?
Is it due to performance, for minimising the annoyance of things such as screen flicker, or for when you need to update more than just the form?

Looking for some clarification on the difference from a VBA perspective.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

被你宠の有点坏 2024-10-12 05:55:19

一般来说,VB6和VBA使用DoEvents来告诉处理器继续处理消息队列中的消息。当处理器中正在执行密集处理操作时使用它,因此程序的 UI 仍然响应所有其他事件。

示例:您正在执行密集搜索算法,如果您没有添加 DoEvents,程序可能会挂起,直到完成搜索。另一方面,如果您添加 DoEvents(比如说,添加到搜索循环中),程序不会挂起,并且仍然可以处理所有程序事件,例如(取消)取消搜索。

编辑:我认为 DoEvents 比 Repaint 更全面,因为它处理所有事件类型,而不仅仅是处理 UI 的闪烁/挂断。

In general, VB6 and VBA uses DoEvents to tell the processor to continue processing the messages in the message queue. It is used when an intensive processing operation is being done in the processor and so the UI of the program is still responsive to all other events.

Example: You are doing an intensive search algorithm, if you didn't add DoEvents the program may hang up till it finishes the search. On the other hand, if you add DoEvents (to the search loop let's say) the program does not hang up and still can handle all program events like (Cancel) canceling the search.

EDIT: I see it as DoEvents is more comprehensive than Repaint since it deals with all event types not only handling the flicker/Hangup of the UI.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文