Компонент ListView представляет собой список, позволяющий организовать сложную структуру для своих элементов, а также задать настройки их отображения при визуальном представлении. По сути данный компонент представляет собой окно, аналогичное окну папки в операционной системе Windows.
Основные свойства компонента ListView:
- View – определяет режим отображения элементов в списке:
· LargeIcon – большие иконки;
· SmallIcon – маленькие иконки;
· List – маленькие иконки списком;
· Details – подробный режим;
· Tile – большие снимки.
- Activation – определяет реакцию на ввод:
· Standart – реакция определяется установками операционной системы;
· OneClick – реакция после одинарного щелчка кнопкой мыши;
· TwoClick – реакция после двойного щелчка кнопкой мыши.
- AllowColumnReorder – для режима списка (Details) предоставляет пользователю возможность менять порядок колонок в таблице свойств.
- AutoArrange – определяет для режимов маленьких иконок (SmallIcon) и больших иконок (LargeIcon), нужно ли автоматически сортировать элементы списка.
- CheckBoxes – определяет, будут ли отображаться флажки (компонент CheckBox) напротив элементов списка.
- Columns – определяет набор колонок, отображаемых в подробном режиме (Details).
- FullRowSelect – определяет для подробного режима, следует ли выделять не только заголовок элемента, но и всю строку, содержащую дополнительную информацию об элементе в так называемых подчинённых элементах (SubItems), отображаемых в колонках, состав которых был задан в свойстве Columns.
- Groups – определяет группы элементов списка и их состав.
- HeaderStyle – определяет стиль заголовков колонок:
· Clickable – заголовки колонок работают, как кнопки (доступен щелчок);
· NonClickable – по заголовку колонки нельзя щелкнуть, как по кнопке;
· None – заголовки у колонок отсутствуют.
- HideSelection – определяет, следует ли скрывать выделение, когда с элемента управления снимается фокус.
- HotTracking – определяет, следует ли при событии наведения на элемент изменять иконку стрелки курсора на указывающую руку.
- Items – определяет набор элементов списка.
- LabelEdit – определяет, можно ли редактировать заголовки элементов.
- LabelWrap – определяет, можно ли разбивать длинные заголовки элементов на несколько строк.
- LargeImageList – определяет набор иконок для больших картинок в виде компонента ImageList. Картинки из набора могут быть назначены элементам списка по индексу.
- MultiSelect – определяет, следует ли разрешить множественное выделение в списке.
- ShowGroups – определяет, следует ли отображать группы.
- SmallImageList – определяет набор иконок для маленьких картинок.
Поскольку свойство Items компонента ListView представляет собой коллекцию, он обладает методом Add, который позволяет программно добавить новый элемент в список:
LV1.Items.Add("Заголовок элемента");
Элементы списка являются объектами класса ListViewItem. В связи с этим бывает удобно предварительно создавать объект, представляющий новый элемент списка, настраивать его свойства и только после этого добавлять созданный элемент в список:
ListViewItem NewItem = new ListViewItem("Мой элемент");
NewItem.Group = LV1.Groups[0]; // Определяем группу элемента
LV1.Items.Add(NewItem); // Добавляем элемент в список
Группы элементов также представляют собой объекты, но принадлежащие к классу ListViewGroup. Соответственно, группа также может быть предварительно создана в качестве отдельного объекта, а уже затем добавлена в коллекцию групп компонента ListView при помощи метода Add:
ListViewGroup NewGroup = new ListViewGroup("Моя группа");
LV1.Groups.Add(NewGroup); // Добавляем группу в список групп
При создании нового объекта, представляющего элемент списка ListView, его группа может быть определена в параметрах конструктора:
ListViewItem NewItem = new ListViewItem("Элемент", NewGroup);
LV1.Items.Add(NewItem);
Помимо элементов списка и их групп, коллекцией также является набор выделенных пользователем элементов списка, на который ссылается свойство SelectedItems компонента ListView. Перебор элементов данной коллекции может быть осуществлён в цикле foreach:
foreach (ListViewItem i in LV1.SelectedItems)
MessageBox.Show(i.Text);
Удаление элемента списка может быть осуществлено при помощи метода Remove. В следующем примере из коллекции элементов списка удаляется первый по индексу элемент:
if (LV1.Items.Count > 0) // Проверяем, не пуст ли список
LV1.Items.Remove(LV1.Items[0]); // Удаляем первый элемент
Удаление элемента из списка может быть осуществлено не только по ссылке на элемент, но и непосредственно по индексу этого элемента. Для этого следует использовать метод RemoveAt коллекции элементов.
if (LV1.Items.Count > 5) // Проверяем возможность удаления
LV1.Items.RemoveAt(5); // Удаляем пятый элемент из списка