2012-04-22 65 views
0

几天以来,我一直在处理与TreeViews有关的问题,其网址为VB.net。 我有了一个TreeView与是这样的层次结构中的应用:在树状视图中更改级别节点的位置

 
Node 1 
    |--- Node 2 
      |--- Node 3 
       |--- Node 4 

即每个节点只有一个孩子,整个树形只有一个根。 我试图完成的是通过使用“上移”和“下移”按钮来切换这些节点的位置。假设我想要移动“节点2”,它需要“节点1”的位置,“节点1”会移动到“节点2”的位置。

我已经尝试了一些东西,但永远不能让它工作,所以我所做的只是改变这些节点(文本,工具提示文字,...)的属性。 我希望能够通过实际移动节点来做到这一点,不仅要让它看起来“正确”,还要学习关于此控件的更多内容,因为对我而言,处理有点混乱(我是新开发的.Net)

在此先感谢。

+0

感谢您的帮助。 无论如何,我最终被迫使用另一个控制,这意味着我的问题已经没有意义了。 因为我是新来的,你能否告诉我们是否有错(如果可能的话)接受这两个答案? – Deltint 2012-07-20 00:16:28

回答

0

为了使节点2作为节点1的父:

TreeView1.Nodes("Node1").Parent = TreeView1.Nodes("Node2") 
0

写一些代码给你一个方向(未经测试):

Enum Directions 
    Up 
    Down 
End Enum 

Public Sub MoveNode(ByVal nodeToBeMoved As Windows.Forms.TreeNode, ByVal direction As Directions) 
    Dim parent As TreeNode = nodeToBeMoved.Parent 
    If parent Is Nothing AndAlso 
     direction = Directions.Up Then 
     MsgBox("Node cannot be moved up!") 
     Exit Sub 
    End If 

    Dim child As TreeNode = nodeToBeMoved.FirstNode 
    If child Is Nothing AndAlso 
     direction = Directions.Down Then 
     MsgBox("Node cannot be moved down!") 
     Exit Sub 
    End If 

    Dim childFirstNode As TreeNode = child.FirstNode 

    nodeToBeMoved.Nodes.Clear() 
    If direction = Directions.Up Then 
     parent.Nodes.Clear() 
     nodeToBeMoved.Nodes.Add(parent) 
     parent.Nodes.Add(child) 
    Else 
     child.Nodes.Clear() 
     child.Nodes.Add(nodeToBeMoved) 
     nodeToBeMoved.Nodes.Add(childFirstNode) 
    End If 
End Sub