| Как поменять местами ноды в TreeView? | |
| От: | Аноним 886 | ||
| Дата: | 02.01.05 16:52 |
| как поменять местами две соседние ноды в TreeView, вместе с их содержимым? TreeNode node = treeView1.SelectedNode; TreeNode pnode = treeView1.SelectedNode.PrevNode; а может надо оперировать TreeNodeCollection? TreeNodeCollection node = treeView1.SelectedNode.Nodes; TreeNodeCollection pnode = treeView1.SelectedNode.PrevNode.Nodes; вобще я плохо представляю как вобще можно оперировать этим элментом управления Чую,что это просто, но почему-то в моих "толстых" учебниках написано очень кратко |
| Как поменять местами ноды в TreeView? | |
| От: | SergeyP гость | ||
| Дата: | 02.01.05 19:57 |
| см. TreeNodeCollection.Remove()/TreeNodeCollection.Insert() данное сообщение получено с www.gotdotnet.ru ссылка на оригинальное сообщение |
| Re: Как поменять местами ноды в TreeView? | |
| От: | Mad_Alex | ||
| Дата: | 02.01.05 23:48 |
| (теперь я зареганный) Вобщем у меня задача реализовать перемещение узлов вверх/вниз я сделал это вот так для кнопки "Вверх" private void Up_button_Click(object sender, System.EventArgs e) { int n=treeView1.SelectedNode.Index; if(n!=0)//может двигаться выше уже некуда { TreeNode node = treeView1.SelectedNode; if(n!=node.Parent.GetNodeCount(false)-1)//для последнего узла нужно использовать другой метод { TreeNode pnode=treeView1.SelectedNode.PrevNode; node.Remove(); pnode.Remove(); treeView1.SelectedNode.Parent.Nodes.Insert(n-1,pnode); treeView1.SelectedNode.Parent.Nodes.Insert(n-1,node); treeView1.SelectedNode=node; } else //если узел самый последний { TreeNode pnode=treeView1.SelectedNode.PrevNode; pnode.Remove(); treeView1.SelectedNode.Parent.Nodes.Add(pnode); } } } всё работает. но неужели нельзя сделать это как-то... по нормальному? |
| Re[2]: Как поменять местами ноды в TreeView? | |
| От: | AndrewVK модератор | ||
| Дата: | 03.01.05 08:43 |
| Здравствуйте, Mad_Alex, Вы писали: Просьба выделять код соответствующими тегами. ... << RSDN@Home 1.1.4 beta 3 rev. 272>> |
| Re: Как поменять местами ноды в TreeView? | |
| От: | SergeyP гость | ||
| Дата: | 03.01.05 20:37 |
| >всё работает. но неужели нельзя сделать это как-то... по нормальному? Без удаления и вставки? Я думаю нельзя. данное сообщение получено с www.gotdotnet.ru ссылка на оригинальное сообщение |
| Re[2]: Как поменять местами ноды в TreeView? | |
| От: | Zuka | ||
| Дата: | 08.01.05 06:55 |
| Здравствуйте, Mad_Alex, Вы писали: M_A>всё работает. но неужели нельзя сделать это как-то... по нормальному? Можно
Это коллекция, а не массив поэтому менять ноды местами не нужно. |
| Re[3]: Как поменять местами ноды в TreeView? | |
| От: | Nikolay_P_I | ||
| Дата: | 11.01.05 05:55 |
| Здравствуйте, Zuka, Вы писали: M_A>>всё работает. но неужели нельзя сделать это как-то... по нормальному? Z>Можно Z>
Z>Это коллекция, а не массив поэтому менять ноды местами не нужно. Я-бы еще обратил внимание на состояние Expand после такого Remove. По-моему — оно сбросится в false у всех нод внутри убранной. Так что если хочется сортировку при изменении ноды — придется еще и эту проблему решать. |
| Re[2]: Как поменять местами ноды в TreeView? | |
| От: | greatvict | ||
| Дата: | 19.01.05 08:15 | ||
| Оценка: | 6 (1) | ||
| Здравствуйте, SergeyP, Вы писали: SP>Без удаления и вставки? Я думаю нельзя. Можно использовать встроенную сортировку, только придется обращаться к функциям Win API —
Вызов SortChildren сортирует элементы на одном уровне. У меня данная процедура вызывается весьма часто и какого-нибудь неудобства замечено не было. А при Remove/Insert была проблема, если элементы сами являлись поддеревьями. ... << RSDN@Home 1.1.4 beta 3 rev. 185>> |