我有一个可编辑的ComboBox组件,我想引用显示的TextInput,以便以编程方式选择其中的Text。这在TextInput上非常简单:

private function selectNameText():void
{
    nameTextInput.selectionBeginIndex = 0;

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

但我找不到任何方法来访问可编辑ComboBox的TextInput。

有帮助吗?

解决方案

似乎不需要引用TextInput的 THIS 原因,因为默认选择了文本。

其他提示

当使用ComboBox作为DataGrid itemRenderer时,我遇到了这个问题。如果需要引用TextInput,可以覆盖ComboBox并创建一个返回受保护textInput的getter。在我的情况下,我需要阻止ComboBox可编辑时发生的自动选择。看看ComboBox,这发生在updateDisplayList期间,所以这应该可以解决问题:

package com.whatever.controls
{

import mx.controls.ComboBox;

public class EditableComboBox extends ComboBox
{

    public function EditableComboBox()
    {
        super();
    }

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        if (editable)
        {
            textInput.selectionBeginIndex   = text.length;
            textInput.selectionEndIndex     = text.length;
        }
    }

}
}

在Combobox的“Creation Complete”期间事件,您可以直接获取组件:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top