C# для Windows Урок 20. TreeView для каталогов - окончание
Осталось для нашего дерева папок, начатаго на уроке 18, добавить метод AddTreeNodes для добавления подузлов. Вот его код (этот метод добавляем естественно, в класс формы):
// Добавление подузлов.privatevoid 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)
{
}
}
Тут есть несколько тонкостей. Во-первых, мы используем исключения. Это необходимо потому, что не все диски или папки могут оказаться доступными. Во-вторых, обратите внимание, что плюсики мы добавляем не к каждому узлу, а только к непустым. Т. е. рядом с пустыми папками сразу ничего показываться не будет.
Все. Можно запускать программу.
Обратите внимание, что знак плюсика есть не у каждой папки - а именно у пустых папок его нет.
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru