2

我们有一个通常在 Windows XP 下运行的 .NET 2.0 软件(配置为 Windows“经典”模式,没有花里胡哨)。现在我在 Windows 7 上运行它的全部荣耀。我在 Windows 7 上注意到的是,当面板失效时,布局中的某个面板塞满了标签和布局,会生成各种 OnPaint 事件。不仅如此,随后的 OnPaint 调用似乎会中断当前正在执行的调用。从窗口的消息队列中取出一条消息,处理它直到完成,然后取出下一条的方案发生了什么?

我有时使用 OnPaint 方法来配置布局,也许这就是生成额外 OnPaint 事件的原因,但我至少不能在下一次调用之前运行当前的 OnPaint 方法来完成吗?我不得不用各种检查乱扔我的代码,以防止正在发生的这种重入。

这对于在经典模式下运行的 Windows XP 来说不是问题,尽管在 Windows XP 完全运行时可能会出现问题。

4

1 回答 1

3

我有时使用 OnPaint 方法来配置布局,

当您“配置”(更改)布局时,会使控件无效。Paint 事件/方法不是更改任何内容的正确位置。它应该只油漆。

但是我不能在下一次调用之前至少运行当前的 OnPaint 方法来完成吗?

当 Paint 不会导致 Invalidate(它不应该)时,这是自动的。当它发生时,你就有一个应该修复的错误。

于 2013-01-10T14:34:47.977 回答