progs.biz  
Начало>C#>Windows>Урок 20
C#
VB.NET
Visual C++.NET
Visual C++ 6
WinAPI
C++
Delphi
C++ Builder
Java
PHP
Visual Basic 6.0
DirectX
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Э. Троелсен. C# и платформа .NET.
Э. Троелсен. C# и платформа .NET.
Заказать на Озоне


SpyLOG
Яндекс-цитирования

C# для Windows
Урок 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)
            {
            }
        }

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

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

Дерево каталогов

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

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX new!
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz
Label

 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2004 сайт progs.biz
© 2002-2004 Алексеев Игорь