【问题标题】:Dialog Box Delay / Not Displayed Fully for 2 Seconds While Application is Starting Up应用程序启动时对话框延迟/未完全显示 2 秒
【发布时间】:2014-04-22 18:08:08
【问题描述】:

我是 Winforms 开发的新手,我在 Stackoverflow 上还没有看到解决方案,但可能错过了。

我有一个对话框出现,但由于应用程序启动处理,它只在前 2 秒左右显示一半(即显示边框和背景,除了将显示控件的位置)。在最初的 2 秒后显示控件之前,控件位置为白色。

我知道我可以在应用程序启动时延迟它,但更喜欢在战略位置使用 Suspend() / Resume() 对。我试过加入 load 事件,但没有效果。此外,看起来Refresh() 打破了暂停/恢复。想法受到赞赏,因为我也想在应用程序的其他地方使用此策略。我想知道什么方法可以适用于这个和其他严重闪烁的区域(或者在完全显示之前完全显示很长的延迟,如所述的启动对话框)。

【问题讨论】:

  • 导致延迟的代码位于何处?
  • 在主窗体的 Shown 事件处理程序中。

标签: c# winforms forms controls


【解决方案1】:

尝试将长时间运行的代码放在Load 事件处理程序中。通过将它放在Shown 事件处理程序中,它会导致表单冻结,直到它完成加载,因为显示的事件处理程序不允许消息循环中的其他事件,例如Paint 事件——得到处理。至少如果你把它放在Load 事件中,所有长时间运行的代码都会在显示之前发生。

如果您不喜欢有任何延迟,请考虑将长时间运行的代码放入在Shown 事件中启动的计时器中。

如果您想通过长时间运行的代码获得更高级的信息,那么总会有BackgroundWorker

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多