2016-07-14 12 views
0

Ich habe wenig Wissen über die Strukturansicht. Ich möchte in der Lage sein, den Baumknoten nach oben zu verschieben und den Baumknoten nach oben zu bewegen.Verschieben Sie TreeNode nach oben, oben, unten und nach unten C#

-Früchte -äpfel -Oranges -Bananas Wassermelone

Unten ist der Code ich versuche haben zu implementieren.

Zuerst bewege ich die Wassermelone nach oben, es funktioniert gut. Als nächstes, wenn ich versuche, Bananen nach oben zu bewegen, wird der Index der Bananen -1 anzeigen. Gibt es noch etwas, was ich falsch mache?

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) 
     { 

     } 
    } 

Antwort

0

ich komme mit der Antwort heraus und es funktioniert. Ich möchte nur teilen, wenn jemand darauf schaut.

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) 
     { 

     } 
    }