| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > TreeView |
| Автор: Alkash 30.8.2010, 09:46 | ||||
| Доброго времени суток господа...Возник вопрос: Допустим, есть 4 списка узлов.
Они заполняются строками следующим образом
Каким образом их записхнуть в TreeView? Тоесть, сначала узлы первого уровня, в них узлы второго, в узлы второго - узлы третьего. В гугле подходящей подсказки не нашёл-) Заранее благодарен. |
| Автор: Экскалупатор 30.8.2010, 10:10 | ||
| у каждого нода есть свойство Nodes, оно возвращает коллекцию дочерних узлов вот в него и запихивай все. (у самого контрола тоже есть такое свойство). выглядит все это примерно так:
|
| Автор: Alkash 30.8.2010, 10:21 |
| Дык пробовал. Фишка в том - как найти индекс узла в который добавлять допустим итемы из 3 списка? Я уже чего только не пробовал, получается - извращеная хрень и узлы разбегаются какой куда |
| Автор: Alkash 30.8.2010, 10:49 |
| А.Да. Пробовал и подпихнуть индекс выделенного узла - ну не прикрепляет он к нему почему-то-( |
| Автор: Экскалупатор 30.8.2010, 11:04 | ||
добавляет дочерний узел к узлу с именем Node1 |
| Автор: Alkash 30.8.2010, 11:24 |
| А если я незнаю, какое имя может быть у нода в данный момент? |
| Автор: Экскалупатор 30.8.2010, 11:44 | ||
мы ходим по кругу, расскажи что тебе конкретно нужно. как ты определяешь какому ноду добавить дочерний узел? если всем то получай коллекцию нодов и обходи их в цикле, если какому то конкретному, то определись что должно произойти перед добавлением(к примеру, пользователь должен выбрать какой то нод, и тогда к нему добавляется дочерний узел), и по этому событию и определяй что у тебя выделено и куда тебе что то надо добавить добавляет выделенному ноду дочерний:
|
| Автор: Alkash 30.8.2010, 12:05 |
| Мне нужно, 4 коллекции запихнуть в тривью. При этом каждый узел 1 уровня - включает в себя все узлы вторго уровня, и я честно говоря - не понимаю как таки это сделать в моём случае |
| Автор: Экскалупатор 30.8.2010, 12:38 | ||
самый элементарный вариант:
|
| Автор: Alkash 30.8.2010, 14:08 |
| О...Спасибо, мысль понял |
| Автор: wester 30.8.2010, 16:09 | ||
| Экскалупатор, вот например тут проблема - в else на строке 63 новые ноды добавляются в root, хотя по идее должны добавляться как child, того узла который я раскрываю
как такое поправить? |
| Автор: Экскалупатор 30.8.2010, 17:18 |
| treeView1.Nodes[nodeIndex-1].Nodes.Add(newNode); а если убрать -1? Добавлено через 5 минут и 25 секунд e.Node.Index - тут возвращается индекс того нода который разворачивается , для чего отнимать от него -1? у тебя где то вопросы с алгоритмом, проведи рефакторинг, разбери свой метод на два, и сразу станет понятно. |
| Автор: userdab 3.9.2010, 17:36 |
| Посмотрите http://social.msdn.microsoft.com/Forums/ru-RU/csharpru/thread/cff9c618-51df-4642-834a-21ba60d9bae1/ , может это вам чем-то поможет. |
| Автор: ZuTa 12.9.2010, 13:46 |
| Пишу файловый менеджер. Как в TreeView отоброзить каталог файлов ? |
| Автор: CYBERDREAM 12.9.2010, 14:25 |
| рекурсивно http://www.dreamincode.net/code/snippet2591.htm Самое оптимальное - вывести список дисков, при раскрытии узла, строить его узлы, ну и т.д. http://www.codeproject.com/KB/cs/TreeViewFileExplorer.aspx а вот пример |
| Автор: Fortnox 12.9.2010, 14:29 | ||||
ZuTa, так:
Использование:
Черт, надо научиться обновлять страницу, перед отправкой. |
| Автор: ZuTa 13.9.2010, 19:17 |
| Спасибо вам. Но мне нужен не только код, но и описание, комментарий. Ибо я новичок, хочу научиться чего-то, а не просто копипастом заниматься. |
| Автор: ZuTa 21.9.2010, 10:39 |
| пишу, например TreeNode tn = treeView1.SelectedNode; string path = tn.FullPath; допустим (папка находиться в D:\abc) но переменная path(при выводи её в лейбл) равняется D:\\abc почему лишние слэши ? |
| Автор: CYBERDREAM 21.9.2010, 10:46 |
| FullPath возвращает конкатенированную строку из всех родительских узлов, плюс PathSeparator ( в твоем случае это слэш) если хочешь получить значение в узле, то tn.Node[0].Text |
| Автор: ZuTa 21.9.2010, 11:09 |
| Нет, мне нужно получить в переменную path путь к папке (TreeView - это файловая система) |
| Автор: CYBERDREAM 21.9.2010, 11:13 |
| проверил, нет такого) слэши в дебаге разве что видны, потому чо слэш в строке представлян двумя слэшами |
| Автор: ZuTa 21.9.2010, 11:20 |
| ну да, а у меня в дебаге получается 4 слэша с чем же это связано?! |
| Автор: CYBERDREAM 21.9.2010, 11:22 |
| чему у тебя равен PathSeparator у treeView? |
| Автор: ZuTa 21.9.2010, 11:27 |
| одному слэшу \ диски в тривью добавляются в таком виде C:\, D:\ потом когда вставить в какой-то подузел тринод(например в диск С папку abc) Получаеться FullPath="C:\" + PathSeparator + "abc" и получается два слэша,хм... |
| Автор: CYBERDREAM 21.9.2010, 11:30 |
| тогда оставь название диска и двоеточие у корневых узлов |