ComboBox单击事件与其容器冲突

时间:2011-08-11 10:41:28

标签: flex combobox

我想在点击此HBox中的任何对象时更改HBox的样式。我为HBox的click事件设置了句柄,然后我发现很难在这个HBox中的组合框中选择项目。

当我点击组合框时,它会下拉其项目列表,并且HBox样式发生变化,然后组合框很快就会下降,我没有时间选择Combobox中的项目。

这是我的代码,有什么方法可以避免这个问题吗?

<mx:Repeater id="itemRepeater">
    <mx:HBox id="itemHBox" styleName="active" click="onItemClick(event);">
        <mx:ComboBox id="cb1" dataProvider="{dp}" close="closeHandler(event);"/>
        <mx:TextArea id="itemText" />
    </mx:HBox>
</mx:Repeater>

private function onItemClick(e:MouseEvent):void {
    for (var k:Number=0; k < total; k++) {
        itemHBox[k].styleName = "Inactive";
    }
    // Change edit style
    itemHBox[e.currentTarget.instanceIndices].styleName = "active";
}

1 个答案:

答案 0 :(得分:1)

设置styleName会使HBox无效并强制其子项检查其大小和重新布局,这就是为什么ComboBox会隐藏它的下拉列表。

相反,您可以使用精确的样式值:

private function onItemClick(e:MouseEvent):void {
    for (var k:Number=0; k < total; k++) {
        itemHBox[k].setStyle("backgroundColor", 0xFFFFFF);
    }
    // Change edit style
    itemHBox[e.currentTarget.instanceIndices].setStyle("backgroundColor", 0xFF0000);
}