我们有一个 .NET 2.0 软件,通常在 Windows XP 下运行(在 Windows“经典”模式下配置,没有附加功能)。现在我在 Windows 7 上运行它,尽享它的魅力。我在 Windows 7 上注意到的是,当面板失效时,布局中充满标签和布局的某个面板会生成各种 OnPaint 事件。不仅如此,后续的 OnPaint 调用似乎还会中断当前正在执行的调用。从窗口消息队列中取出一条消息,处理完成,然后取出下一条消息的方案发生了什么?
我有时使用 OnPaint 方法来配置布局,也许这就是生成附加 OnPaint 事件的原因,但我不能至少在下一次调用之前运行当前的 OnPaint 方法来完成吗?我不得不在我的代码中进行各种检查,以防止发生这种重入。
这对于以经典模式运行的 Windows XP 来说不是问题,尽管在全盛时期运行的 Windows XP 中可能会出现问题。
最佳答案
I'm using the OnPaint method sometimes to configure the layouts,
当您“配置”(更改)布局时,您将使控件无效。 Paint 事件/方法不是更改任何内容的正确位置。它应该只绘画。
but can't I at least run the current OnPaint method to completion before the next call is made?
当 Paint 不会导致无效(也不应该)时,这是自动的。当出现这种情况时,您就有了一个需要修复的错误。
关于c# - OnPaint 事件接二连三,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260151/