Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual C++(.Net) / Visual C++(.Net).doc
Скачиваний:
167
Добавлен:
09.05.2015
Размер:
1.18 Mб
Скачать

Компонент ListBox

Компонент находится в списке Common Controls палитры компонентов. Этот компонент выводит список элементов, из которых пользователь может выбрать как один, так и несколько элементов.

Если количество элементов превосходит размеры окна, то в компоненте автоматически появляется полоса прокрутки.

Свойство SelectedIndexвозвращает целочисленное значение, которое соответствует первому элементу в списке выбранных. Если выборка оказалась пустой, то значение этого свойства устанавливается в –1. Значение индекса в списке изменяется с нуля. При многострочной выборке это свойство возвращает индекс первого элемента из списка выборки.

Свойство SelectedItemвозвращает выбранный элемент. Обычно это текстовая строка.

Количество элементов в списке сообщается в свойстве Count, значение которого всегда на единицу больше индекса последней строки списка, потому что список отсчитывается от нуля.

Рассмотрим еще некоторые свойства компонента.

ColumnWidthзадает ширину колонки при использовании многоколоночного списка.

DataSourceзадает источник данных, с помощью которого можно заполнять список. Существует два способа заполнения:

  • использовать метод Add(), в этом случае свойствоDataSourceдолжно быть отключено;

  • подключаться к различным источникам данных, доступ к которым формируется через диалоговое окно, открывающееся кнопкой, расположенной в поле этого свойства.

Items– это элементы компонента, которые можно не только просматривать, но и изменять. Для задания списка строк-элементов надо щелкнуть на кнопке с многоточием в поле этого свойства, чтобы открылось окно редактора, позволяющего вводить и редактировать строки.

Извлечь строки из компонента можно так:

String ^it=ListBox1->Items[i]->ToString();

где i– номер строки (отсчет начинается с нуля).

Для того чтобы обнаружить строку, на которой был щелчок мыши (обработка события Click) можно так:

String ^it=this->ListBox1->Items[this->ListBox1-> ->SelectedIndex]->ToString();

MultiColumnобеспечивает компоненту работу в многоколоночном режиме (т.е. набор строк, не помещающийся в окно, будет размещаться в новых колонках).

Если свойство ScrollAlwaysVisibleустановлено вtrue, то полоса прокрутки появляется независимо от количества элементов.

Свойство SelectionModeзадает, сколько элементов выбирается за один раз.

Для добавления и удаления строк из списка используются методы:

  • Add(str)– добавить элемент в конец списка;

  • Insert(i,str)– вставить элемент внутрь списка;

  • Clear()– удалить все элементы из списка;

  • Remove(str)– удалить заданный элемент из списка;

  • RemoveAt(i)– удалить строку, индекс которой указан в аргументе.

Например, для добавления элемента в список необходимо написать:

ListBox1->Items->Add(“Строка!!!”);

Например, если в обработчик какого-либо события поместить следующие операторы

ListBox1->Items->Clear();

ListBox1->Items->Add(“Строка номер 1”);

ListBox1->Items->Add(“Строка номер 2”);

ListBox1->Items->Insert(1,“Привет!”);

получим следующий результат:

Строка номер 1

Привет!

Строка номер 2

Компонент ComboBox

Компонент находится в списке Common Controlsи представляет собой комбинацию редактируемого поляTextBoxи спискаListBox: в форме он представляется в виде редактируемого поля с треугольной кнопкой справа.

Компонент используется для вывода данных в виде выпадающего списка и последующей выборки их из этого списка. По умолчанию компонент появляется в виде окна для ввода/вывода текста, при этом выпадающий список скрыт.

Многие свойства этого компонента совпадают со свойствами ListBoxиTextBox, например,Text,Items,SelectedIndexи др.

Пример

Модифицируем программу «АЗС» следующим образом. Вместо ввода стоимости бензина, организуем компонент ComboBox, в котором будем из списка выбирать тип топлива: газ, дизель, АИ-92, АИ-96. Соответствующая каждому из видов топлива цена будет задаваться непосредственно в тексте программы, и пользователь изменить ее не сможет.

Поместим на форму компонент ComboBoxи назовем егоTip. Настройку этого компонента будет выполнять конструктор формы. Таким образом, в соответствующей функцииForm1(void){…}запишем:

InitializeComponent();

Tip->Items->Add(“Газ”);

Tip->Items->Add(“Дизель”);

Tip->Items->Add(“АИ-92”);

Tip->Items->Add(“АИ-96”);

По умолчанию считаем, что выбран третий элемент, поэтому

Tip->SelectedIndex=2;

Далее модифицируем обработчик события Clickдля кнопки «Рассчитать». Теперь мы не вводим цену топлива, поэтому необходимо написать код, позволяющий сопоставить тип топлива и его цену. Это делается с помощью оператора выбора по номеру выбранной строки.

switch (Tip->SelectedIndex){

case 0: l=10.50; break; //газ

case 1: l=12.20; break; //дизель

case 2: l=21.40; break; //АИ-92

case 3: l=22.80; break; //АИ-96

default: l=1000; //Неизвестный тип топлива

}

Далее расчет производится по приведенной в предыдущем примере формуле. Единственное, следует осуществить проверку, выбран ли тип топлива, или пользователь ввел некое значение:

if (l!=1000){

v=Convert::ToDouble(vol->Text);

double s=l*v;

...

}else{

MessageBox::Show("На нашей АЗС такого топлива нет! Выберите топливо из списка!", "Бензиновый калькулятор", MessageBoxButtons::OK, MessageBoxIcon::Asterisk);

tip->Focus();

}

Если пользователь выбрал элемент, не присутствующий в списке, можно написать обработчик события SelectedIndexChanged, в котором, например, осуществить очистку компонентов, в которых выводится результат.