【问题标题】:Excel ActiveX labels blink / change style upon clickingExcel ActiveX 标签在单击时闪烁/更改样式
【发布时间】:2011-11-18 18:11:06
【问题描述】:

这似乎是一个小故障,多年来一直困扰着我。一些 ActiveX 控件,当放置在工作表上时,单击时会做一些奇怪的事情。在下图中,没有任何代码并且Label1被禁用,但是当Label1被点击时,Label2消失了。我还看到黑色标签在单击时变白。我知道防止这种情况发生的唯一方法是使用子类化/挂钩来拦截和取消标签上的 wm_mousedown 消息,但对于这样一个简单的目标来说,这是大量的工作。有没有人有一个简单的解决方案?

*编辑:我相信正在发生的事情是 z-order/z-index 将单击的控件带到顶部。但如果有办法防止这种情况发生,我很想知道如何。

以下是单击标签时背景颜色变化的示例。请参阅标题为“原始值:”的标签

【问题讨论】:

  • 你是说当你有物理重叠的标签时,你点击后面的那个,你希望它留在后面吗?您描述的行为听起来是设计使然。当您单击某物时,它会将焦点更改为控件,通常您希望在放置在它上面的任何东西上都可以看到它。
  • 真的吗?通常对我来说,事情会按照最初设计的顺序进行。例如,当您单击网页时,网页的背景图像不会覆盖整个页面。您不希望面板在单击面板时覆盖面板上的所有项目。订单不应因点击而改变。如果是设计,我认为这是一个愚蠢的设计
  • 苹果和橙子。当您在彼此顶部打开两个不同的浏览器窗口并单击一个时,它将获得焦点并覆盖第二个窗口。您单击了它,因此 Windows 假定您希望在另一个窗口中看到它。这是设计使然。文本框和命令按钮的作用与标签相同。
  • Windows 是肯定的,但对于像标签这样的控件,它的延迟

标签: excel vba ms-office activex


【解决方案1】:

项目应该保持它们的布局顺序,我有很多项目具有重叠的菜单、形状和标签,它们都保持在它们组织的层顺序中,它们移动的唯一时间是你以编程方式重新创建它们要更新菜单等,那么您需要编写代码以从下到上按顺序将它们全部放回。如果他们没有保持秩序,那么就有问题而不是设计缺陷。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 2021-08-26
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2018-04-23
    相关资源
    最近更新 更多