Елементи управління TreeView і ListView
Для створення інтерфейсу типу Провідник зручно використовувати елементи управління ListView і TreeView.
Рис.1. Елемент управління ListView
Рис.2. Елемент управління TreeView
Розглянемо їх більш детально.
Список ListView
Елемент управління ListView є списком елементів з використанням піктограм, аналогічний використовуваному в правій частині вікна Провідника.
Залежно від властивості View список може приймати наступний вигляд: Details (Таблиця), LargeIcon (Великі значки), List (Список), SmallIcon (Дрібні значки), Tile (Плитка).
У таблиці 1 представлені основні властивості елемента управління ListView, які відповідають за його зовнішній вигляд.
Таблиця 1. Властивості елемента управління ListView
Властивість | Призначення |
Alignment | Задає вирівнювання елементів списку в разі використання дрібних і великих значків |
AllowColumnReorder | Значення True цієї властивості дозволяє користувачеві в разі використання таблиці змінювати порядок проходження стовпців |
AutoArrange | Значення True задає автоматичне упорядкування дрібних і великих значків |
Columns | Задає список колонок, які будуть відображатися в разі використання таблиці... |
HearderStyle | Задає стиль заголовка для списку у вигляді таблиць. Може приймати значення Clickable (виглядає подібно кнопок і в разі їх вибору може виконувати дію, наприклад сортування), Nonclickable (не реагує на клацання миші) і None (заголовок стовпчика не відображається) |
LabelEdit | Значення True цієї властивості дозволяє редагувати підпис до елементу |
LabelWrap | Задане за замовчуванням значення True цієї властивості дозволяє розміщення підпису до елементу на декількох рядках |
LargeImageList | Дозволяє задати об'єкт ImageList, зображення з якого будуть використовуватися для великих значків |
SmallImageList | Дозволяє задати об'єкт ImageList, зображення з якого будуть використовуватися для дрібних значків |
Для додавання елементів в список використовується властивість Items елемента управління ListView. При натисканні кнопки з трьома крапками, розташованої праворуч від назви властивості, відкривається діалогове вікно ListViewItem Collection Editor (Редактор елементів списку). У цьому вікні знаходяться кнопки Add (Додати) і Remove (Видалити), що дозволяють додавати елементи в список та видаляти їх з нього. У правій частині вікна виводяться властивості елементів.
Для додавання елементів в список програмним способом призначений метод Add колекції Items елемента управління ListView. Властивість SelectedItems містить вибрані елементи об'єкта ListView.
Щоб користувач міг вибирати відразу кілька елементів, необхідно задати значення True для властивості MultiSelect. Для задання сортування елементів об'єкта ListView використовується властивість Sorting, яка може набувати значень Ascending (За зростанням), Descending (За зменшенням) і None (Не сортувати).
Дерево TreeView
Елемент управління TreeView є ієрархічним списком, аналогічним використовуваному в лівій частині вікна Провідника.
У таблиці 2 представлені основні властивості елемента управління TreeView, що відповідають за його зовнішній вигляд.
Таблиця 2. Властивості елемента управління TreeView
Властивість | Призначення |
Indent | Задає ширину відступу дочірніх елементів дерева від батьківських |
ItemHeight | Задає висоту елемента дерева |
ImageList | Дозволяє задати об'єкт ImageList, зображення з якого будуть використовуватися в якості значків для елементів дерева |
LabelEdit | Значення True властивості дозволяє редагувати підпис до елементу |
LineColor | Задає колір лінії, яка відображається між елементами дерева |
ShowLines | Визначає, чи будуть видні лінії між батьківськими і дочірніми елементами дерева, а також між елементами одного рівня |
ShowPlusMinus | За допомогою властивості True дозволяє задати відображення кнопок зі знаками "плюс" і "мінус" для батьківських каталогів зліва від їх найменування |
ShowRootLines | Визначає, чи відображаються лінії між кореневими елементами дерева |
Для додавання елементів в список використовується властивість Nodes елемента управління TreeView. При натисканні кнопки з трьома крапками, розташованої праворуч від назви властивості, відкривається діалогове вікно TreeNode Editor (Редактор дерева). У цьому вікні знаходяться кнопки Add Root (Додати кореневий елемент) і Add Child (Додати дочірній елемент), що дозволяють задати елементи дерева. У правій частині вікна виводяться властивості елементів.
Для додавання елементів в список програмним способом призначений метод Add колекції Nodes елемента управління TreeView. Кожен елемент дерева являє собою об'єкт TreeNode. Властивість SelectedNode задає або повертає обраний елемент дерева.
Приклад використання елементів
Розглянемо приклад використання елементів управління ListView і TreeView, який дозволить переглядати список папок і файлів, що зберігаються в них. Для цього виконайте такі дії:
1. Додайте в форму елемент управління ImageList і задайте для нього список зображень, які будуть використовуватися в якості значків для закритої і відкритої папки, а також файлу.
2. Перетягніть на форму елемент управління SplitContainer, який спростить роботу з елементами управління ListView і TreeView.
3. Для відображення ієрархії папок розташуйте на першій панелі об'єкта SplitContainer елемент управління TreeView.
4. Додайте на другу панель елемент управління ListView, який буде представляти собою список підкаталогів і файлів обраного в дереві каталогу. Щоб дані відображалися у вигляді звичайного списку, задайте для властивості View значення List.
5. Щоб елементи керування ListView і TreeView заповнювали панелі об'єкта SplitContainer цілком, задайте для їх властивості Dock значення Fill. Також надайте найменування створеного об'єкта ImageList властивості ImageList в TreeView і властивості SmallImageList в ListView.
6. Додайте в код програми дві наступні функції, що заповнюють дерево і список форми:
' Функція заповнення дерева
Private Sub FillTreeView(ByVal tnDriveNode As TreeNode,
ByVal strDirPath As String)
Try
' Отримуємо масив та рухаємось по ньому
Dim astrDirectories As String() =
System.IO.Directory.GetDirectories(strDirPath)
For Each strDirectory As String In astrDirectories
Dim tnDirectoryNode As New TreeNode
' Задаємо параметри дерева та додаємо його
tnDirectoryNode.Text =
strDirectory.Remove(0, strDirectory.LastIndexOf("\") + 1)
tnDirectoryNode.ImageIndex = 0
tnDriveNode.Nodes.Add(tnDirectoryNode)
FillTreeView(tnDirectoryNode, strDirectory)
Next
Catch ex As Exception
End Try
End Sub
' Функція заповнення списку
Private Sub FillListView(ByVal strDirPath As String)
Try
' Отримуємо масив та рухаємось по ньому
Dim astrDirectories As String() =
System.IO.Directory.GetDirectories(strDirPath)
For Each strDirectory As String In astrDirectories
Dim listViewItem As New ListViewItem()
' Задаємо параметри елемента списку та додаємо його
listViewItem.Text =
strDirectory.Remove(0, strDirectory.LastIndexOf("\") + 1)
listViewItem.ImageIndex = 0
ListView1.Items.Add(ListViewItem)
Next
' Отримуємо масив та рухаємось по ньому
Dim astrFiles As String() =
System.IO.Directory.GetFiles(strDirPath)
For Each strFileName As String In astrFiles
Dim listViewItem As New ListViewItem()
' Задаємо параметри елемента списку та додаємо його
listViewItem.Text =
strFileName.Remove(0, strFileName.LastIndexOf("\") + 1)
listViewItem.ImageIndex = 2
ListView1.Items.Add(listViewItem)
Next
Catch ex As Exception
End Try
End Sub
7. У процедуру обробки події Load форми додайте наступний код:
' Очищуємо елементи форми
TreeView1.Nodes.Clear()
ListView1.Items.Clear()
' Задаємо кореневий каталог
Dim strDirPath As String = "C:\"
' Додаємо кореневий каталог в дерево
Dim tnDriveNode As New TreeNode
tnDriveNode.Text = strDirPath.Remove(Len(strDirPath) - 1, 1)
TreeView1.Nodes.Add(tnDriveNode)
' Додаємо папки та файли в дерево
FillTreeView(tnDriveNode, strDirPath)
' Виділяємо кореневий каталог
TreeView1.SelectedNode = TreeView1.TopNode
8. Щоб при виборі каталогу в дереві в правій частині форми відображалися папки і файли, що входять до нього , необхідно в процедуру обробки події AfterSelect дерева додати наступні рядки:
Private Sub TreeView1_AfterSelect(ByVal sender As Object, _
ByVal e As System.Windows.Forms.TreeViewEventArgs) _
Handles TreeView1.AfterSelect
' Очищуємо список та заповнюємо його
ListView1.Items.Clear()
FillListView(e.Node.FullPath)
End Sub
9. Якщо ми хочемо, щоб при розкритті і закритті папки її значок змінювався, потрібно додати обробку подій AfterCollapse і AfterExpand елемента управління TreeView:
Private Sub TreeView1_AfterCollapse(ByVal sender As Object, _
ByVal e As System.Windows.Forms.TreeViewEventArgs) _
Handles TreeView1.AfterCollapse
e.Node.Collapse()
e.Node.ImageIndex = 0
End Sub
Private Sub TreeView1_AfterExpand(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.TreeViewEventArgs) _
Handles TreeView1.AfterExpand
e.Node.Expand()
e.Node.ImageIndex = 1
End Sub
Додаток готовий. Результат його виконання представлений на рис. 3.
Рис.3. Використання елементів управління ListView і TreeView