/ / Presuňte TreeNode hore, hore, dole a dole C # - stromové zobrazenie, treenode

Presuňte TreeNode hore, hore, dole a dole C # - stromový pohľad, treenode

Mám málo vedomostí o stromovom pohľade. Chcem byť schopný presunúť uzol stromu na vrchol a posunúť sa hore po uzle stromu.

-Plody -Apples -Oranges -Bananas -Watermelon

Nižšie je uvedený kód, ktorý sa snažím implementovať.

Najprv premiestnim melón na vrchol, funguje to dobre. Ďalej, keď sa pokúsim posunúť banány nahor, index banánov ukáže -1. Existuje niečo iné, čo robím zle?

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

}
}

odpovede:

0 pre odpoveď č. 1

Podarí sa mi vyjsť s odpoveďou a funguje to. Len sa o to chcete podeliť, ak sa na to niekto pozerá.

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

}
}