2012-04-22 22 views
0

数日前、私はVB.netにあるツリービューの問題に取り組んできました。 私はこのように書き階層で、ツリービューを持つアプリケーションがあります。ツリービュー内のレベルノードの位置を変更します

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

すべてのノードが唯一の子を持っており、全体のツリービューはルートのみを持っていることを意味します。 私が達成しようとしているのは、 'Move Up'と 'Move Down'ボタンを使って、これらのノードの位置を切り替えることです。私が「ノード2」を上に移動したいとしたら、「ノード1」の場所をとり、「ノード1」は「ノード2」の位置に移動します。

私はいくつか試してみましたが、うまくいかなかったので、これらのノードのプロパティ(Text、ToolTipText、...)のみを変更しました。 私はノードを実際に動かすことによってこれを行うことができるようにしたいと思っています。それは「正しい」ように見せるだけでなく、このコントロールに関するいくつかのことを学ぶことです。私には、 (私は.Net開発で新しくなった)

ありがとうございます。ノード1の親としてノード2を作るために

+0

感謝を。 とにかく、別のコントロールを強制的に使用してしまいました。これは、私の質問がこれ以上意味をなさないことを意味します。 私はここから新しくなったので、両方の回答を受け入れることが(可能であれば)間違っているかどうかを教えてください。 – Deltint

答えて

0

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 
関連する問題