如何防止 CheckBox 或 ToggleButtonBase 发生变化?

How do you prevent a CheckBox or ToggleButtonBase from changing?

我有一个 Spark CheckBox,我试图防止它在单击时发生变化。在大多数 Flex 组件中,都有一个 CHANGING 事件,您可以防止默认。我只找到了一个 CHANGE 事件,如果我监听该事件然后设置 checkbox.selected = !checkbox.selected;它只是再次发送更改并重新选中复选框。

我已经为鼠标单击事件添加了一个事件侦听器,这似乎有效,但有一个闪烁,您可以看到它被选中的瞬间。

IEventDispatcher(checkbox).addEventListener(MouseEvent.CLICK, function(e:Event):void {
        trace("click");
        ToggleButtonBase(target).selected = !ToggleButtonBase(target).selected;
        e.stopImmediatePropagation();
        e.preventDefault();
}); 

使用这个,如果我追踪事件,它是:

  • 改变
  • 改变
  • 点击

不理想,但似乎有效。

您可以只禁用此复选框的任何鼠标事件,并且仍然可以使用 selected=true:

以编程方式更改选择
<s:CheckBox id="myCheckbox"
            mouseChildren="false"
            mouseEnabled="false"/>