Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 526
Эндрю Троелсен
private void InitializeComponent() {
…
// checkedBoxRadioOptions
//
this.checkedBoxRadioOptions.Items.AddRange(new object[] {
"Фронтальная АС", "8-канальный звук",
"CD-проигрыватель", "Кассетный проигрыватель",
"Тыловая AC", "Ультра-бас(сабвуфер)"
});
…
this.Controls.Add(this.checkedBoxRadioOptions);
}
Теперь обновите логику обработки события Click для кнопки Подтвердить заказ. Выясните, какие из элементов CheckedListBox в настоящий момент отмечены, и добавьте их в строку orderInfo. Вот как должен выглядеть соответствующий программный код.
private void btnOrder_Click(object sender, EventArgs e) {
// Построение строки
string orderInfo = "";
…
orderInfo += "-------------------------------\n";
// Для каждого элемента из CheckedListBox.
for (int i = 0; i ‹ checkedBoxRadioOptions.Items.Count; i++) {
// Отмечен ли элемент?
if (checkedBoxRadioOptions.GetItemChecked(i)) {
// Получение текста элемента и добавление к orderInfo.
orderInfo += "Опция радио: ";
orderInfo += checkedBoxRadioOptions.Items[i].ToString();
orderInfo += "\n";
}
}
…
}
В качестве заключительного замечания относительно типа CheckedListBox обращаем ваше внимание на то, что этот тип поддерживает многоколоночное представление, устанавливаемое с помощью унаследованного свойства MultiColumn. Поэтому, если вы добавите в программный код оператор
checkedBoxRadioOptions.MultiColumn = true;
вы увидите многоколоночный CheckedListBox, как показано на рис. 21.10.
Рис. 21.10. Многоколоночный тип CheckedListBox
Элемент Listbox
Как уже упоминалось выше, тип CheckedListBox наследует большинство своих возможностей от типа ListBox (окно списка). Чтобы продемонстрировать возможности использования типа ListBox, давайте добавим в наше приложение CarConfig возможность выбора пользователем марки автомобиля (BMW, Yugo и т.д.). Нa рис. 21.11 показан внешний вид того пользовательского интерфейса, который мы хотим получить.
Рис. 21.11. Тип ListBox
Как всегда, начните с создания члена-переменной для работы с типом (в данном случае это тип ListBox). Затем сконфигурируйте элемент управления в соответствии со следующим фрагментом из InitializeComponent().
private void InitializeComponent() {
…
// carMakeList
//
this.carMakeList.Items.AddRange(new object[] {"BMW", "Caravan", "Ford", "Grand Am", "Jeep", "Jetta", "Saab", "Viper", "Yugo"});
…
this.Controls.Add(this.carMakeList);
}
Изменения обработчика событий btnOrder_Click() также очень просты.
private void btnOrder_Click(object sender, EventArgs e) {
// Построение строки для отображения информации.
string orderInfo = "";
…
// Получение выбранного элемента (не индекса!).
if (carMakeList.SelectedItem != null) orderInfo += "Марка: " + carMakeList.SelectedItem + "\n";
…
}
Элемент ComboBox