2016-07-14 12 views
0

私はツリービューについてほとんど知識がありません。ツリーノードを一番上に移動し、ツリーノードを上に移動したいと考えています。TreeNodeを上、上、下、下に移動するC#

-Fruits -Apples -Oranges -Bananas -Watermelon

以下は、私が実装しようとしているコードです。

まず、スイカを一番上に移動します。うまくいきます。次にバナナを上ろうとすると、バナナの指数に-1が表示されます。私は間違って何か他に何かありますか?

private void moveTopToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     TreeNode tv = new TreeNode(); 
     TreeNode selectedNodeToMove = new TreeNode(); 

     try 
     { 
      TreeNode parent = treeView.SelectedNode.Parent; 

      selectedNodeToMove = treeView.SelectedNode; 

      if (parent != null) 
      { 
       parent.Nodes.Remove(treeView.SelectedNode); 
       parent.Nodes[0] = selectedNodeToMove; 
      } 
     } 

     catch (Exception ex) 
     { 

     } 
    } 

    private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     TreeNode tv     = new TreeNode(); 
     TreeNode selectedNodeToMove = new TreeNode(); 

     try 
     { 
      TreeNode parent = treeView.SelectedNode.Parent; 

      selectedNodeToMove = treeView.SelectedNode; 

      if (parent != null) 
      { 
       int index = parent.Nodes.IndexOf(treeView.SelectedNode); 

       if (index > 0) 
       { 
        tv = parent.Nodes[index - 1]; 

        parent.Nodes.Remove(treeView.SelectedNode); 
        parent.Nodes.Remove(tv); 
        parent.Nodes.Insert(index - 1, selectedNodeToMove); 
        parent.Nodes.Insert(index, tv); 
       } 
      } 
     } 

     catch (Exception ex) 
     { 

     } 
    } 

答えて

0

回答が出てきていて、うまくいきます。誰かがこれを見ているならば、共有したいだけです。

private void moveTopToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     TreeNode selectedNodeToMove = new TreeNode(); 

     try 
     { 
      int index   = -1; 
      TreeNode parent  = treeView.SelectedNode.Parent; 
      TreeNode node= this.treeView.SelectedNode.Clone() as TreeNode; 

      if (parent != null) 
      { 
       for (int j = 0; j < this.treeView.SelectedNode.Parent.Nodes.Count; j++) 
       { 
        if (this.treeView.SelectedNode == this.treeView.SelectedNode.Parent.Nodes[j]) 
        { 
         index = j; 
         break; 
        } 
       } 

       this.treeView.BeginUpdate(); 
       this.treeView.SelectedNode.Parent.Nodes.Insert(0, node); 
       this.treeView.SelectedNode.Parent.Nodes.RemoveAt(index + 1); 
       this.treeView.EndUpdate(); 

       this.treeView.SelectedNode = node; 
       this.treeView.Select(); 

      } 

     } 

     catch (Exception ex) 
     { 

     } 
    } 

    private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     TreeNode tv     = new TreeNode(); 
     TreeNode selectedNodeToMove = new TreeNode(); 

     try 
     { 
      TreeNode parent= treeView.SelectedNode.Parent; 
      TreeNode node= this.treeView.SelectedNode.Clone() as TreeNode; 

      if (parent != null) 
      { 
       int index = -1; 

       for (int j = 0; j < parent.Nodes.Count; j++) 
       { 
        if (this.treeView.SelectedNode == parent.Nodes[j]) 
        { 
         index = j; 
         break; 
        } 
       } 

       this.treeView_.BeginUpdate(); 
       this.treeView.SelectedNode.Parent.Nodes.Insert(index - 1, node); 
       this.treeView.SelectedNode.Parent.Nodes.RemoveAt(index + 1); 
       this.treeView.EndUpdate(); 

       this.treeView.SelectedNode = node; 
       this.treeView.Select(); 
     } 

     catch (Exception ex) 
     { 
     } 
    } 

    private void moveDownToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     TreeNode tv     = new TreeNode(); 
     TreeNode selectedNodeToMove = new TreeNode(); 

     try 
     { 
      TreeNode parent = treeView.SelectedNode.Parent; 
      TreeNode node = this.treeView.SelectedNode.Clone() as TreeNode; 
      selectedNodeToMove = treeView.SelectedNode; 

      if (parent != null) 
      { 
       int index = -1; 

       for (int j = 0; j < parent.Nodes.Count; j++) 
       { 
        if (this.treeView.SelectedNode == parent.Nodes[j]) 
        { 
         index = j; 
         break; 
        } 
       } 

       this.treeView.BeginUpdate(); 
       this.treeView.SelectedNode.Parent.Nodes.RemoveAt(index); 
       this.treeView.SelectedNode.Parent.Nodes.Insert(index + 1, node); 
       this.treeView.EndUpdate(); 

       this.treeView.SelectedNode = node; 
       this.treeView.Select(); 

     } 

     catch (Exception ex) 
     { 

     } 
    } 

    private void moveBottomToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      TreeNode parent = treeView.SelectedNode.Parent; 
      TreeNode node = this.treeView.SelectedNode.Clone() as TreeNode; 

      if (parent != null) 
      { 
       int index = -1; 

       for (int j = 0; j < parent.Nodes.Count; j++) 
       { 
        if (this.treeView.SelectedNode == parent.Nodes[j]) 
        { 
         index = j; 
         break; 
        } 
       } 

       if (index != parent.Nodes.Count - 1) 
       { 
        this.treeView.BeginUpdate(); 
        this.treeView.SelectedNode.Parent.Nodes.Insert(parent.Nodes.Count, node); 
        this.treeView.SelectedNode.Parent.Nodes.RemoveAt(index); 
        this.treeView.EndUpdate(); 

        this.treeView.SelectedNode = node; 
        this.treeView.Select(); 
     } 

     catch (Exception ex) 
     { 

     } 
    } 
関連する問題