Я вижу, что вы используете спарк, а не mx.Упомянутое мной свойство editable
применимо только к списку на основе mx.В искре ComboBox расширяется DropDownListBase
и редактируется по умолчанию.
Элемент управления ComboBox
является дочерним классом элемента управления DropDownListBase
.Как и элемент управления DropDownListBase
, когда пользователь выбирает элемент из раскрывающегося списка в элементе управления ComboBox
, элемент данных появляется в области подсказок элемента управления.
Одно из различий между элементами управлениячто область подсказки элемента управления ComboBox
реализуется с помощью элемента управления TextInput
вместо элемента управления Label
для элемента управления DropDownList
.Поэтому пользователь может редактировать область подсказки элемента управления, чтобы ввести значение, которое не является одним из предопределенных параметров.
Например, элемент управления DropDownList
позволяет пользователю выбирать только из списка предопределенных элементовв контроле.Элемент управления ComboBox
позволяет пользователю выбрать предварительно определенный элемент или ввести новый элемент в область приглашения.Ваше приложение может распознать, что был введен новый элемент, и, необязательно, добавить его в список элементов в элементе управления.
Элемент управления ComboBox
также выполняет поиск в списке элементов, когда пользователь вводит символы в приглашениеплощадь.Когда пользователь вводит символы, открывается раскрывающаяся область элемента управления.Затем он прокручивает и выделяет наиболее близкое совпадение в списке элементов.
Так что в идеале в этом случае следует использовать DropDownList
.
Вы получаете нулевую ошибку при попытке получить доступ к textInput
из конструктора, потому что он еще не был создан.В элементах управления на основе mx (Flex-3) вы можете получить к нему доступ из обработчика creationComplete
;Я не совсем уверен, как это сделать для элементов управления на основе искры.
Обновление: я думаю, что я выяснил, как получить доступ к частям скина в spark (хотя вы могли бы вместо этого использовать DropDownBox
).Вы должны переопределить метод partAdded
.
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
if (instance == textInput)
{
textInput.editable = false;
}
}
Однако есть одна загвоздка: в этом случае она может не работать.Исходный код ComboBox.as говорит, что
API игнорирует визуальные свойства editable
и selectable
Итак DropDownList
это так!
Первоначальный ответ, отправленный для mx ComboBox
.
Этого не должно быть, поскольку значение по умолчанию для свойства editable равно false
.
Попробуйте явно установить значение false
из конструктора.
public function CustomCombo() {
super();
this.editable = false;
}