我有一个可编辑的ComboBox组件,我想引用显示的TextInput,以便以编程方式选择其中的Text。这在TextInput上非常简单:
private function selectNameText():void
{
nameTextInput.selectionBeginIndex = 0;
nameTextInput.selectionEndIndex = nameTextInput.text.length;
}
但我找不到任何方法来访问可编辑ComboBox的TextInput。
答案 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 );
}