簡體   English   中英

彈出Combobox中的ItemClick事件

[英]ItemClick Event in a flex Combobox

有誰知道,有沒有辦法在Flex ComboBox(或類似的東西)中捕獲ItemClick事件。 也許有任何技巧.. :)我確實意識到,我可以自定義它,但這不適合我的情況。

謝謝你的時間 :)

我認為以下文檔會有所幫助

彈性列表中的ItemClick事件

正如您在mx:ComboBox源中所看到的,創建下拉列表的函數是私有的, ITEM_CLICK的監聽ITEM_CLICK是私有的,列表本身也是私有的:

private var _dropdown:ListBase;

private function getDropdown():ListBase
{
        // ...

        _dropdown = dropdownFactory.newInstance();

        // ...

        _dropdown.addEventListener(ListEvent.ITEM_CLICK, dropdown_itemClickHandler);

        // ....
}

private function dropdown_itemClickHandler(event:ListEvent):void
{
    if (_showingDropdown)
    {
        close();
    }
}

所以你甚至無法擴展ComboBox

唯一的公共事物是dropdownFactory ,理論上可以覆蓋以某種方式注冊創建的下拉列表或創建擴展列表。 但我看到的問題是ComboBox不是下拉列表的父級 - PopupManager是。 這可能使調度(泡沫)事件變得非常困難。

我找到了這個解決方案 我只想要一個帶有itemClick事件和沒有itemselect選項的spark下拉列表(不要在按鈕上顯示所選的項目標簽)

[Event(name="itemClick", type="mx.events.ItemClickEvent")]

public class ItemClickDropDownList extends DropDownList
{

    public function ItemClickDropDownList()
    {
        super();
    }

    override public function closeDropDown(commit:Boolean):void
    {
        super.closeDropDown(commit);

        var e:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK, true);
        e.item = this.selectedItem;
        e.index = this.selectedIndex;
        dispatchEvent(e);

        //Deselect item
        this.selectedIndex = -1;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM