一连串的OnPaint活动

时间:2013-01-10 14:27:46

标签: c# .net windows-7

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

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

这不是Windows XP在经典模式下运行的问题,尽管它可能是Windows XP中充满光彩的问题。

1 个答案:

答案 0 :(得分:3)

  

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

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

  

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

当Paint不会导致Invalidate(并且它不应该)时,这是自动的。如果确实如此,那么你就有了一个应该修复的错误。