已禁用ComboBox在Win7上启用

时间:2012-05-02 14:10:27

标签: c# winforms windows-7 combobox

在我们的项目中,我们使用了许多表单和控件。我们的一个表单显示有许多包含的控件。第一次显示表单时应该禁用所有控件(还有一个额外的“编辑”按钮“)。

但我的ComboBoxes看起来已经启用了。它们的行为不是这样的 - 您无法单击它们,也不会触发任何事件。如果有一个绘制事件被触发,它们实际上是正确绘制的,例如: G。调整窗口大小。

此行为仅适用于Windows 7 - 而不适用于Windows XP。如何正确绘制组合框,我该怎么办?它不会每次都发生,所以我认为这不是我的组合框的问题......也会发生一些组合框被正确绘制而其余部分被错误绘制了!

Wrong drawn combobox on the left - correctly drawn on the right hand side

我该怎么做才能避免这种情况?

更新:我刚刚发现只有在Windows 7中选择了另一个主题而不是“经典”时才会出现此行为。

我还通过WindowMessages调试了我,发现一些消息丢失/没有发送。我会告诉你不同的读数,但文件只有几百行:/

在经典中,所有都被正确绘制。什么可能导致这种行为??

UPDATE2:也许只是一点点更新 - 在我为整个应用程序激活DoubleBuffering之后(在mainform中使用WS_EX_COMPOSITED),行为不再存在。但它仍然很奇怪,不是吗?

1 个答案:

答案 0 :(得分:0)

如果paint事件修复它,您可以通过调用

强制重绘

this.Invalidate();