Урок 20. TreeView для каталогов - окончание

Осталось для нашего дерева папок, начатаго на уроке 18, добавить метод AddTreeNodes для добавления подузлов. Вот его код (этот метод добавляем естественно, в класс формы):

// Добавление подузлов.

private void AddTreeNodes(TreeNode tn)

{

TreeNode aux;

// Получаем полный путь для папки узла.

DirectoryInfo d = new DirectoryInfo(GetFullPath(tn));

// Массив для хранения подпапок.

DirectoryInfo[] ds;

try

{

// Получаем все подпапки для папки.

ds = d.GetDirectories();

// Для каждой папки выводим ее имя и имена всех подпапок.

foreach (DirectoryInfo s in ds)

{

// Добавляем каждую подпапку.

aux = tn.Nodes.Add(s.Name);

// Устанавливаем для нее признак, что ее еще не раскрывали.

aux.Tag = "";

try

{

// Если она не пуста,

if(s.GetDirectories().GetLength(0)!=0)

{

// то добавляем в нее фиктивный узел.

aux.Nodes.Add("");

}

}

// Перехватываем исключение запрещенного доступа.

catch (UnauthorizedAccessException)

{

};

}

}

//Перехват общего исключения (например, если диск a: не вставлен).

catch(Exception)

{

}

}

Тут есть несколько тонкостей. Во-первых, мы используем исключения. Это необходимо потому, что не все диски или папки могут оказаться доступными. Во-вторых, обратите внимание, что плюсики мы добавляем не к каждому узлу, а только к непустым. Т. е. рядом с пустыми папками сразу ничего показываться не будет.

Все. Можно запускать программу. Будет она выглядеть приблизительно так:

Обратите внимание, что знак плюсика есть не у каждой папки - а именно у пустых папок его нет.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: