【问题标题】:Disabled ComboBox looks enabled on Win7禁用的 ComboBox 看起来在 Win7 上启用
【发布时间】:2012-05-02 14:10:27
【问题描述】:

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

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

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

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

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

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

在经典中,所有内容都正确绘制。什么会导致这种行为??

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

【问题讨论】:

  • 没有你的代码很难说。适用于简单的测试应用。

标签: c# winforms windows-7 combobox


【解决方案1】:

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

this.Invalidate();

【讨论】:

  • 当然。但问题只是有时,并非总是如此,而且这个解决方案将是“干净”之外的一切......
  • 您是否在设计器中将它们设置为禁用?还是参加其他活动?也许该事件会按您的预期触发?
  • 我也首先想到了一个事件问题或类似的东西,但我尝试改变几乎所有相关的东西,但仍然没有改变。此外,它只是“看起来”启用并且它有时(并且总是在 XP 上)工作让我想到了其他原因......
猜你喜欢
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多