如何引用可编辑ComboBox的TextInput?

时间:2009-03-03 19:49:26

标签: flex actionscript combobox editor textinput

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

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

当使用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;
        }
    }

}
}

答案 2 :(得分:0)

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

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}