1

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

但我ComboBoxes看起来他们已启用。它们的行为不是这样的——你不能点击它们,也不会触发任何事件。如果触发了绘制事件(例如调整窗口大小),它们实际上是正确绘制的。

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

左侧绘制的组合框错误 - 右侧绘制正确

我能做些什么来避免这种情况?

更新:我刚刚发现只有在 Windows 7 中选择“经典”以外的另一个主题时才会发生这种行为。

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

在经典中,一切都正确绘制。什么会导致这种行为?

UPDATE2:也许只是一点点更新——在我为整个应用程序激活双缓冲(在主窗体中使用 WS_EX_COMPOSITED)之后,行为不再存在。但这仍然很奇怪,不是吗?

4

1 回答 1

0

如果绘画事件修复它,您可以通过调用强制重绘

this.Invalidate();

于 2012-05-02T14:15:30.020 回答