当前位置: 代码迷 >> C# >> C# treeview控件入选中一个Node节点后,点击button按钮实现节点的连续上移或下移(每移动一次点击一下)
  详细解决方案

C# treeview控件入选中一个Node节点后,点击button按钮实现节点的连续上移或下移(每移动一次点击一下)

热度:68   发布时间:2016-05-05 04:27:20.0
C# treeview控件中选中一个Node节点后,点击button按钮实现节点的连续上移或下移(每移动一次点击一下)
问题描述: 在一个treeview控件上有若干节点,其中部分存在子节点,现在想要在一个button按钮上实现选中节点后可以连续的单击button按钮进行节点的上移或下移,对有子节点的,可以实现对子节点的自由上下移动。
现在卡在这:当单击一次button按钮后,执行完一次移动节点操作,下一次单击按钮时上一次选中treeview节点的焦点失去,而变成了treeview的默认选中节点,这个问题怎么解决?也就是当一次移动节点后,treeview的selectedNode还保留在原来的节点上,不用重新选择。
请各位大神们支招,新手,请尽量具体些,有代码最好,谢谢!
------解决思路----------------------
1:取得选中的节点,并判断是否有子节点。
2:有子节点,是父节点,直接通过Nodes的insert方法重新插入,插入之前需要将它的同级下节点给移除,再使用insert方式 插入到选中节点之前。 没子节点的 也一样。 最后都需要重新绑定。
------解决思路----------------------
引用:
二楼的大神,你说的我已经实现了,现在要解决的是怎样连续移动节点的问题,单次的移动没有问题,当我连续点击两次移动按钮,原来选中的节点的焦点丢失了,不能继续上移或下移,这个问题怎么解决?

获取当前选中的node的index,点击一次 就记录一次,并设置selectedIndex = 选中的index+次数。
------解决思路----------------------
跟焦点没有关系,本来你点了按钮的时候,焦点就已经跑到按钮上去了
但是选择的节点不会丢失

但是你重新绑定之后,默认就不再选择任何节点了
------解决思路----------------------
记录原来选中的结点,再重新选中就可以了
  相关解决方案