| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Загрузка XML документы в TreeView |
| Автор: Srg 17.5.2007, 04:24 | ||||
| Здравствйте, У меня такой вопрос: Если я имею XML файл примерно такого содержания
и так дале... Как мне его обработать так, чтобы в TreeView выводилось только Name (MyNode тоже не надо выводить) и чтобы остальные значения, например ID, ImageIndex являлись как бы свойствами этого нода, чтобы потом я могу вывести остальную информацию в ListView по ID конкретного нода. В msdn'е нашел только такой код
Причем он выводит все подряд...вот так - см. вложение Очень прошу помощи... |
| Автор: Сарт 17.5.2007, 16:00 | ||||||||||
| Вот те пример для разбирательства, взято с .Net World Для начала добавим обработчик щелчка по кнопке:
Тут мы делаем две вещи- во-первых, мы показываем все диски, которые есть на нашем компьютере (метод GetLogicalDrives) и, во-вторых, для каждого узла добавляем фиктивный подузел для появления плюсика рядом с ним. Двигаемся дальше. Добавим код, выполняющийся перед раскрытием некоторой ветки дерева:
Вот код обещанного метода NodeExpand:
Тут мы опять делаем только часть работы (чтобы не запутаться) - а именно вызываем пока не написанный нами метод AddTreeNodes. Наш код достаточно прост - а именно мы раскрываем наш узел только если он не пуст (проверка условия tn.Nodes.Count!=0). Если он не пуст, то мы удаляем добавляемый при создании фиктивный узел (который служил только для того, чтобы показать знак "+" для непустых папок у нашего дерева) и добавляем реальные подузлы (напомним еще раз, что для этого нам еще предстоит написать метод AddTreeNodes). Далее мы устанавливаем для нашего узла признак того, что он уже раскрывался и что нам для него не надо будет добавлять узлы (т. е. записываем в свойство Tag значение "+"). Давайте напишем еще один вспомогательный метод - GetFullPath. Этот метод по узлу нашего дерева возвращает полный путь (т. е. от корневого узла (папки), до нашего узла (папки), включая все промежуточные узлы (папки)). Вот код метода GetFullPath:
Принцип работы этого метода такой - берем родительский узел для нашего узла, приписываем его текст влева, потом берем родительский узел для родительского, берем узел для него и т. п., пока не окажемся в корневом узле (который соответствует диску в файловой системе). Осталось для нашего дерева папок, начатаго на уроке 18, добавить метод AddTreeNodes для добавления подузлов. Вот его код (этот метод добавляем естественно, в класс формы):
Тут есть несколько тонкостей. Во-первых, мы используем исключения. Это необходимо потому, что не все диски или папки могут оказаться доступными. Во-вторых, обратите внимание, что плюсики мы добавляем не к каждому узлу, а только к непустым. Т. е. рядом с пустыми папками сразу ничего показываться не будет. Половина из тут написанного тебе не нужна, но зато поразбираешься=) |
| Автор: KuZyagroup 23.5.2007, 04:28 | ||
У меня вопросик: Если мы добавляем фиктивный узел то tn.Nodes.Count=1 ??? Или я где то запутался. П.С. А можно ссылку на источник материала. Заранее спасибо |
| Автор: Naum 23.5.2007, 08:50 |
Да. Никто ведь кроме нас, по идее, не знает, что этот узел - фиктивный. |