Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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