在我们的项目中,我们使用了许多表单和控件。我们的一个表单显示有许多包含的控件。第一次显示表单时应该禁用所有控件(还有一个额外的“编辑”按钮“)。
但我的ComboBoxes
看起来已经启用了。它们的行为不是这样的 - 您无法单击它们,也不会触发任何事件。如果有一个绘制事件被触发,它们实际上是正确绘制的,例如: G。调整窗口大小。
此行为仅适用于Windows 7 - 而不适用于Windows XP。如何正确绘制组合框,我该怎么办?它不会每次都发生,所以我认为这不是我的组合框的问题......也会发生一些组合框被正确绘制而其余部分被错误绘制了!
我该怎么做才能避免这种情况?
更新:我刚刚发现只有在Windows 7中选择了另一个主题而不是“经典”时才会出现此行为。
我还通过WindowMessages调试了我,发现一些消息丢失/没有发送。我会告诉你不同的读数,但文件只有几百行:/
在经典中,所有都被正确绘制。什么可能导致这种行为??
UPDATE2:也许只是一点点更新 - 在我为整个应用程序激活DoubleBuffering之后(在mainform中使用WS_EX_COMPOSITED),行为不再存在。但它仍然很奇怪,不是吗?
答案 0 :(得分:0)
如果paint事件修复它,您可以通过调用
强制重绘 this.Invalidate()
;