4
A
回答
1
void MoveNodeUp(TreeNode node)
{
TreeNode parentNode = node.Parent;
int originalIndex = node.Index;
if (node.Index == 0) return;
TreeNode ClonedNode = (TreeNode)node.Clone();
node.Remove();
parentNode.Nodes.Insert(originalIndex - 1, ClonedNode);
parentNode.TreeView.SelectedNode = ClonedNode;
}
4
您需要操纵TreeView的Nodes集合。见TreeNodeCollection。
如果你有三个树节点,你要移动的最后一个前面,例如:(注:未测试的代码,但给出了这个概念)
var lastNode = MyTreeView.Nodes[2];
MyTreeView.Nodes.Remove(lastNode);
MyTreeView.Nodes.Insert(0, lastNode);
1
这就是我已写:
public void MoveNode(TreeView tv, TreeNode node, bool up)
{
if ((node.PrevNode == null) && up) {
return;
}
if ((node.NextNode == null) && !up) {
return;
}
int newIndex = up ? node.Index - 1 : node.Index + 1;
var nodes = tv.Nodes;
if (node.Parent != null) {
nodes = node.Parent.Nodes;
}
nodes.Remove(node);
nodes.Insert(newIndex, node);
}
0
我写了这个代码,不需要任何克隆。
对于我的情况下,它向上移动一个位置在兄弟节点,但可以适应
TreeNode selectedNode = treeViewChain.SelectedNode;
if (selectedNode != null && selectedNode.Index > 0)
{
TreeNode parent = selectedNode.Parent;
int selectedIndex = selectedNode.Index;
selectedNode.Remove();
parent.Nodes.Insert(selectedIndex - 1, selectedNode);
treeViewChain.SelectedNode = selectedNode;
}
相关问题
- 1. 我如何定制TreeNodes在TreeView中显示的顺序/位置?
- 2. 如何更改列表的顺序?
- 3. 如何更改列的堆叠顺序?
- 4. Hgroup - 如何更改元素的顺序?
- 5. 如何更改数组的顺序?
- 6. 如何更改JSON消息的顺序?
- 7. 如何更改gridview中列的顺序?
- 8. 如何更改MVC3中routes.MapRoute的顺序?
- 9. 更改列顺序?
- 10. 更改列顺序
- 11. 更改列顺序
- 12. 如何更改显示顺序?
- 13. 如何动态更改gridview templatecolumn顺序?
- 14. PHP:如何更改“if” - 动态顺序
- 15. 如何更改旧版datatables列顺序?
- 16. SQL:如何更改行顺序位置
- 17. 如何更改顺序barplot seaborn
- 18. 如何更改事件执行顺序?
- 19. 如何更改此队列顺序?
- 20. Magento - 如何更改侧边栏顺序?
- 21. 更改列的顺序
- 22. unordered_map更改的顺序
- 23. 更改数组的顺序
- 24. 更改ListActivity中的顺序
- 25. 更改AVMutableCompositionTrack段的顺序
- 26. 更改元素的顺序
- 27. 如何在更改另一列排序顺序时保持rownum排序顺序?
- 28. linq更改列顺序
- 29. jQGrid - 更改列顺序
- 30. Bootstrap 4更改列顺序
为什么要克隆的节点?删除不应该处理它,所以引用仍然有效。 – JMcCarty 2011-06-01 16:31:31
@JMcCarty - 修正了它 – 2016-04-22 13:59:33