在树视图中更改级别节点位置

时间:2012-04-22 20:26:51

标签: vb.net treeview move nodes levels

几天后,我一直在处理 VB.net 上的TreeViews问题。 我有一个具有树形视图的应用程序,其层次结构如下:

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

意味着每个节点只有一个子节点,整个树视图只有一个根节点。 我想要完成的是,通过使用“上移”和“下移”按钮,切换这些节点的位置。假设我想将'节点2'向上移动,它将占用'节点1'并且'节点1'将转到'节点2'位置。

我尝试过一些东西,但是永远无法让它工作,所以我所做的只是更改这些节点的属性(Text,ToolTipText,...)。 我希望能够通过实际移动节点来实现这一点,不仅是为了使它看起来“正确”,而且还要学习更多有关此控件的内容,因为对我来说,处理它有点令人困惑。 (我是.Net开发的新手)

提前致谢。

2 个答案:

答案 0 :(得分:0)

使节点2成为节点1的父节点:

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

答案 1 :(得分: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