Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4.doc
Скачиваний:
31
Добавлен:
15.04.2015
Размер:
215.04 Кб
Скачать

Лабораторная работа №4 работа со списками в windows-приложениях Работа со списками в ListBox

Для изучения работы со списками используем Windows Application проект из лабораторной работы №3, удалив предварительно коды в обработчиках событий нажатия кнопок и контролы (Рис. 1).

Рис.1. Проект решения

Поместим на форму контрол ListBox и рассмотрим его свойства. При этом рассмотрим только свойства, которых нет у ранее использованных контролов.

Свойства DataSource, DisplayMember и ValueMember определяют имя таблицы или массива, поля и значения которых отображаются в списке при работе с базами данных. То есть, заполнить ListBox можно не только с помощью метода Add, но и с помощью свойств DataSource, DisplayMember и ValueMember. Свойтво DataSource может быть использовано при загрузке ListBox из массивов.

Свойство HorizontalExtent устанавливает ширину в пикселях для Scrollbar при значении свойства HorizontalScrollbar true. Если ширина ListBox меньше, чем значение этого свойства, включается горизонтальная полоса прокрутки. Если ширина ListBox больше или равна этому значению, то горизонтальная полоса прокрутки скрывается.

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

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

Свойство MultiColumn позволяет разместить элементы списка в несколько колонок.

Свойство SelectionMode определяет режим селективного выбора строк и может иметь значения:

  • None - выборка пунктов закрыта - при попытке выбора программно возбуждается прерывание, по клику мышкой строка не выделяется;

  • One - одновременно может быть выбран только один пункт списка. Следующий код сделает выбранной только третью строку:

private void toolStripButton1_Click(object sender, EventArgs e)

{

listBox1.Items.Clear();

for (int i = 1; i < 21; i++)

{

listBox1.Items.Add("Строка " + i.ToString());

}

listBox1.SelectionMode = SelectionMode.One;

listBox1.SetSelected(0, true);

listBox1.SetSelected(1, true);

listBox1.SetSelected(2, true);

}

  • MultiSimple - может быть выделено несколько пунктов списка (в предыдущем коде три).

  • MultiExtended - может быть выделено несколько пунктов списка (в предыдущем коде три), пользователю доступны клавиши Shift, Ctrl и стрелки для выделения.

Отметим, что при выделении в режимах MultiSimple и MultiExtend номер индекса выделенного пункта не соответствует порядку выделения строк, а только их порядку в списке. Если к предыдущему коду добавить следующие строки, то, несмотря на то, что поменяны местами индексы для вывода - вывод строк будет все равно последовательный (меню View\Output).

System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[0].ToString());

System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[2].ToString());

System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString());

Свойство Sorted позволяет отсортировать список, например код:

listBox1.Sorted=true;

listBox1.Items.Clear();

for(int i = 10; i > 0;i--)

{

listBox1.Items.Add(i.ToString());

}

выведет список в виде:

1

10

2

3

...

Свойство UseTabStop определяет возможность использования в элементах списка символов табуляции.

Рассмотрим пример:

listBox1.Items.Clear();

listBox1.UseTabStops = true;

for(int i = 1; i < 20;i++)

{

listBox1.Items.Add("Опция\t" + i.ToString());

}

Номера опций отстоят от слова "Опция" на расстоянии, определяемом табуляцией при listBox1.UseTabStops = true; и будут отображены слитно со словом, а сам символ табуляции как нечитаемый, при listBox1.UseTabStops = false.