0

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

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

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

4

3 回答 3

1

由于这个原因,似乎没有必要引用 TextInput,因为默认情况下会选择文本。

于 2009-03-03T20:21:42.680 回答
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;
        }
    }

}
}
于 2009-06-03T15:10:23.223 回答
0

在 Combobox 的“创建完成”事件期间,您可以直接获取组件:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
于 2014-06-23T14:18:48.043 回答