c# - OnPaint 事件接​​二连三

标签 c# .net windows-7

我们有一个 .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/

相关文章:

c# - 带有 WPF 的 Aero 玻璃框架上类似 Windows 资源管理器的搜索框

windows-7 - 通过批处理文件设置系统环境变量

c# - 我如何找到 RestSharp PUT 抛出异常的原因?

c# - Guide.IsTrialMode 是否适用于 Windows 8 商店应用程序的 MonoGame?

c# - 如何从 View 模型将 Func<T,T,T> 绑定(bind)到 XAML 中的依赖属性?

c# - 传递依赖导致同一 DLL 的版本冲突

c# - 在复杂/单窗口 WPF 应用程序中使用 Thread 的最佳方式

c# - 使用 WCF 生成 SOAP 请求 (RSA-SHA256 PKCS #1 v1.5)

c# - 如何使用 Tab 在 winform 属性网格的属性之间移动

python - 使 Python 脚本在 Windows 上运行而不指定 ".py"扩展名