![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Srg |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.4.2007 Репутация: нет Всего: нет |
Здравствйте,
У меня такой вопрос: Если я имею XML файл примерно такого содержания
и так дале... Как мне его обработать так, чтобы в TreeView выводилось только Name (MyNode тоже не надо выводить) и чтобы остальные значения, например ID, ImageIndex являлись как бы свойствами этого нода, чтобы потом я могу вывести остальную информацию в ListView по ID конкретного нода. В msdn'е нашел только такой код
Причем он выводит все подряд...вот так - см. вложение Очень прошу помощи... Присоединённый файл ( Кол-во скачиваний: 17 )
tree.JPG 18,62 Kb |
||||
|
|||||
| Сарт |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 29.4.2006 Репутация: нет Всего: 0 |
Вот те пример для разбирательства, взято с .Net World
Для начала добавим обработчик щелчка по кнопке:
Тут мы делаем две вещи- во-первых, мы показываем все диски, которые есть на нашем компьютере (метод GetLogicalDrives) и, во-вторых, для каждого узла добавляем фиктивный подузел для появления плюсика рядом с ним. Двигаемся дальше. Добавим код, выполняющийся перед раскрытием некоторой ветки дерева:
Вот код обещанного метода NodeExpand:
Тут мы опять делаем только часть работы (чтобы не запутаться) - а именно вызываем пока не написанный нами метод AddTreeNodes. Наш код достаточно прост - а именно мы раскрываем наш узел только если он не пуст (проверка условия tn.Nodes.Count!=0). Если он не пуст, то мы удаляем добавляемый при создании фиктивный узел (который служил только для того, чтобы показать знак "+" для непустых папок у нашего дерева) и добавляем реальные подузлы (напомним еще раз, что для этого нам еще предстоит написать метод AddTreeNodes). Далее мы устанавливаем для нашего узла признак того, что он уже раскрывался и что нам для него не надо будет добавлять узлы (т. е. записываем в свойство Tag значение "+"). Давайте напишем еще один вспомогательный метод - GetFullPath. Этот метод по узлу нашего дерева возвращает полный путь (т. е. от корневого узла (папки), до нашего узла (папки), включая все промежуточные узлы (папки)). Вот код метода GetFullPath:
Принцип работы этого метода такой - берем родительский узел для нашего узла, приписываем его текст влева, потом берем родительский узел для родительского, берем узел для него и т. п., пока не окажемся в корневом узле (который соответствует диску в файловой системе). Осталось для нашего дерева папок, начатаго на уроке 18, добавить метод AddTreeNodes для добавления подузлов. Вот его код (этот метод добавляем естественно, в класс формы):
Тут есть несколько тонкостей. Во-первых, мы используем исключения. Это необходимо потому, что не все диски или папки могут оказаться доступными. Во-вторых, обратите внимание, что плюсики мы добавляем не к каждому узлу, а только к непустым. Т. е. рядом с пустыми папками сразу ничего показываться не будет. Половина из тут написанного тебе не нужна, но зато поразбираешься=) --------------------
[color=purple][/color]Died.Of course, System.StackOverflow |
||||||||||
|
|||||||||||
| KuZyagroup |
|
|||
![]() magento solution ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 16.4.2007 Где: Kiev Репутация: нет Всего: 4 |
У меня вопросик: Если мы добавляем фиктивный узел то tn.Nodes.Count=1 ??? Или я где то запутался. П.С. А можно ссылку на источник материала. Заранее спасибо |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Да. Никто ведь кроме нас, по идее, не знает, что этот узел - фиктивный. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |