Har någon en smart lösning? Behöver byta position på intilliggande noder(siblings) med hjälp av Next - Previous knappar! Alltså, child1 ska få child2's text..och vise versa. Känns som enkelt, men får inte det till att släppa!! Gissar: För uppåt: Ta reda på den översta utav de som skall byta plats. Ta bort den undre och stoppa dit den på samma position som den övre. Detta ska nog funka! Tycker din lösning verkar bra och borde fungera, men får följande felmedd. " Specified argument was out of the range of valid values. " här: Jag vet inte riktigt vad du menar men om du bara vill flytta en nod upp eller ner kan du använda följande (skrivet i C#):TreeView, byta plats på noder
Sv: TreeView, byta plats på noder
För nedåt: Gör som för uppåt, fast kör den på den undre istället.Sv: TreeView, byta plats på noder
BAK
<code>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim node, node2 As TreeNode
i = TreeView1.Nodes.IndexOf(TreeView1.SelectedNode)
If i > 0 Then
node = TreeView1.Nodes.Item(i).Clone()
node2 = TreeView1.Nodes.Item(i - 1).Clone()
TreeView1.Nodes.RemoveAt(i)
TreeView1.Nodes.RemoveAt(i - 1)
TreeView1.Nodes.Insert(i - 1, node)
TreeView1.Nodes.Insert(i, node2)
End If
End Sub
</code>
FRAM
<code>
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i As Integer
Dim node, node2 As TreeNode
i = TreeView1.Nodes.IndexOf(TreeView1.SelectedNode)
If i < TreeView1.GetNodeCount(False) Then
node = TreeView1.Nodes.Item(i).Clone()
node2 = TreeView1.Nodes.Item(i + 1).Clone()
TreeView1.Nodes.RemoveAt(i + 1)
TreeView1.Nodes.RemoveAt(i)
TreeView1.Nodes.Insert(i, node2)
TreeView1.Nodes.Insert(i + 1, node)
End If
End Sub
</code>Sv: TreeView, byta plats på noder
node = TreeView1.Nodes.Item(i).Clone()
Kanske borde tillägga att det är endast noderna(leaf eller vad de nu kallas) på 4:de undernivån som ska kunna byta plats. Håller på med NodeCount och nodes.item för att komma till rätt nivå, men verkar svårt.
Tacksam för mer hjälp.
/JonasSv: TreeView, byta plats på noder
<code>
//flytta upp
private void cmdUp_Click(object sender, System.EventArgs e)
{
TreeNode node=treeView1.SelectedNode;
if(node!=null)
{
TreeNode parent=node.Parent;
if(parent!=null)
{
int pos=node.Index;
if(pos>0)
{
node.Remove();
parent.Nodes.Insert(pos-1,node);
treeView1.SelectedNode=node;
}
}
}
}
//flytta ner
private void cmdDown_Click(object sender, System.EventArgs e)
{
TreeNode node=treeView1.SelectedNode;
if(node!=null)
{
TreeNode parent=node.Parent;
if(parent!=null)
{
int pos=node.Index;
if(pos<parent.Nodes.Count-1)
{
node.Remove();
parent.Nodes.Insert(pos+1,node);
treeView1.SelectedNode=node;
}
}
}
}
</code>
För att kolla om noderna verkligen ligger på rätt nivå kan du ju använda propertyn Tag (där du kan stoppa in nåt värde), eller så får du helt enkelt parsa FullPath, för att kolla att det är rätt nivå. T.ex genom att räkna antalet /...