2011-06-01 12 views

答えて

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; 
    } 
+2

を適合させることができますか?取り除いてはいけませんので、参照は有効です。 – JMcCarty

+0

@JMcCarty - 修正 –

4

TreeViewのノードコレクションを操作する必要があります。 TreeNodeCollectionを参照してください。

次の3つのツリーノードを持っていて、例えば、前に最後の1を移動させたい場合は:(注意:コードをテストしたが、考え方を示していない)

var lastNode = MyTreeView.Nodes[2]; 
MyTreeView.Nodes.Remove(lastNode); 
MyTreeView.Nodes.Insert(0, lastNode); 
1

が何をだそのI書かれた:

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

私はこのコードを書いています。このコードはクローン作成を必要としません。

私の場合のために、それは、兄弟ノードで1つ上の位置に移動させていますが、ノードのクローンを作成している理由

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