C# для Windows Урок 19. TreeView для каталогов - продолжение
Продолжаем заниматься нашим деревом каталогов.
Вот код обещанного на прошлом уроке метода NodeExpand:
// Раскрытие ветки дерева.privatevoid NodeExpand(TreeNode tn)
{
// Если есть подузлы.if(tn.Nodes.Count!=0)
{
// Если раскрываем в первый раз.if(((string)tn.Tag)=="")
{
// Удаляем фиктивный узел.
tn.Nodes.RemoveAt(0);
// Добавляем подузлы.
AddTreeNodes(tn);
// Устнавливаем признак того, что// узел уже раскрывали и добавили в него все подузлы.
tn.Tag = "+";
}
}
}
Тут мы опять делаем только часть работы (чтобы не запутаться) - а именно вызываем пока не написанный нами метод AddTreeNodes. Наш код достаточно прост - а именно мы раскрываем наш узел только если он не пуст (проверка условия tn.Nodes.Count!=0). Если он не пуст, то мы удаляем добавляемый при создании фиктивный узел (который служил только для того, чтобы показать знак "+" для непустых папок у нашего дерева) и добавляем реальные подузлы (напомним еще раз, что для этого нам еще предстоит написать метод AddTreeNodes). Далее мы устанавливаем для нашего узла признак того, что он уже раскрывался и что нам для него не надо будет добавлять узлы (т. е. записываем в свойство Tag значение "+").
Давайте на этом уроке напишем еще один вспомогательный метод - GetFullPath. Этот метод по узлу нашего дерева возвращает полный путь (т. е. от корневого узла (папки), до нашего узла (папки), включая все промежуточные узлы (папки)). Вот код метода GetFullPath:
// Получение полного имени папки по узлу.private String GetFullPath(TreeNode tn)
{
// Устанавливаем текуший узел на переданный в параметре.
TreeNode currNode = tn;
// В полное имя пока записываем текст,// показываемый в текущем узле.
String fullPath = currNode.Text;
// Двигаемся к корню дерева.while(currNode.Parent!=null)
{
// Переходим на родительский узел.
currNode = currNode.Parent;
// К полному имени приписываем текст родитеского узла.
fullPath= currNode.Text + @"\" + fullPath;
}
// Возвращаем полный путь.return fullPath + @"\";
}
Принцип работы этого метода такой - берем родительский узел для нашего узла, приписываем его текст влева, потом берем родительский узел для родительского, берем узел для него и т. п., пока не окажемся в корневом узле (который соответствует диску в файловой системе).
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru