-
March 6th, 2002, 10:52 AM
#1
REORDER NODES IN A TREEVIEW
Hello All,
Does anybody know how to move a node up or down in a treeview ctrl, in a same level.
Say in other words, moving a node before its upper brother or after its lower brother
changing something like node.previous or node.next
-
March 6th, 2002, 11:06 AM
#2
Re: REORDER NODES IN A TREEVIEW
Is this in Runtime or design time.?
If Runtime how do you want call this. Just let me know and I'll tell you all I can.
Andy
Don't forget to rate!!
Andrew Lennon (Berlitz)
Automation Dev Engineer
-
March 6th, 2002, 11:38 AM
#3
Re: REORDER NODES IN A TREEVIEW
This is at runtime. I want for example :
1 - user select a node
2 - hit a button UP or DOWN
==> The node goes up or down until it reach the first or the last position of its current level
-
March 6th, 2002, 01:50 PM
#4
Re: REORDER NODES IN A TREEVIEW
I have an example of just this thing but is to large to post here. Send me a private message with your email address and I will send you a Zip file. Please refer to the Treeview node moveing up or down so I can remember what your note is talking about.
Please rate it if it answers the question
or is useful.
'
John G
-
March 7th, 2002, 05:49 AM
#5
Re: REORDER NODES IN A TREEVIEW
Sorry this took so long! It's a little scrappy but it works. Remember to put two buttons on the form one fro UP and one for DOWN. This code snippet is for the UP button so all you need to do is basically reverse the process.
private Sub UP_Click()
Dim STR as string
Dim x as Node
Dim i as Integer
Dim newstr1 as string
Dim newstr2 as string
Dim keya as string
Dim keyb as string
'tvw in this case is the TreeView
'get selected node values
i = N.Index - 1
newstr1 = N.Text
keya = N.Key
set x = me.tvw.Nodes(i)
newstr2 = x.Text
'reset the node key values
keya = N.Key
keyb = x.Key
N.Key = "ww"
x.Key = "xx"
'Reset the new node values
x.Text = newstr1
x.Key = keya
N.Text = newstr2
N.Key = keyb
End Sub
Andy
Don't forget to Rate!!!
Andrew Lennon (Berlitz)
Automation Dev Engineer
-
March 7th, 2002, 07:59 AM
#6
Re: REORDER NODES IN A TREEVIEW
Thank you for your interset, Andy, but the code you send me is not exactly what I need : you just switch the key and text values, but the job is not done on the children of the node you move. Your code does if you move UP the NODE_C:
NODE_A.............................NODE_A
|............................................¦
--NODE_B...........................--NODE_C
--NODE_C...........................--NODE_B
--|..........................................--|
-----NODE_D........................-----NODE_D
-----NODE_E........................-----NODE_E
What I want is :
NODE_A.............................NODE_A
|............................................¦
--NODE_B...........................--NODE_B
--NODE_C...........................--¦
--|..........................................-----NODE_D
-----NODE_D........................-----NODE_E
-----NODE_E........................--NODE_A
Perhaps, you know how to do that ?
Thanks.
Christian
-
March 8th, 2002, 10:11 AM
#7
Re: REORDER NODES IN A TREEVIEW
Now you've hit a problem. There is no way to move up or down Nodes with children using Command Buttons. The only I know how move such quantity of nodes is Drag and Drop. If you need help with this just let me know.
Don't forget to rate!!!
Andrew Lennon (Berlitz)
Automation Dev Engineer
-
December 12th, 2012, 02:41 PM
#8
Re: REORDER NODES IN A TREEVIEW
After an extensive search with no luck I have found a way to easily move up and down using a command button in a tree view. It's not pretty but it works well.
My example only goes 5 levels deep, you could continue on with more or remove if you don't need as many.
Code:
Private Sub btnUp_Click(sender As System.Object, e As System.EventArgs) Handles btnUp.Click
Dim myNode As TreeNode = Nothing
Dim i As Integer = 0
Dim x As Integer = 0
Dim L1 As String = String.Empty
Dim L2 As String = String.Empty
Dim L3 As String = String.Empty
Dim L4 As String = String.Empty
Dim L5 As String = String.Empty
If tvw1.SelectedNode.PrevNode Is Nothing Then
MessageBox.Show("Top Of Node - Unable To Move Up", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
Else
x = tvw1.SelectedNode.Level
i = tvw1.SelectedNode.PrevNode.Index
Select Case x
Case 0
myNode = tvw1.SelectedNode
tvw1.Nodes.Remove(myNode)
tvw1.Nodes.Insert(i, myNode)
Case 1
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L1).Nodes.Insert(i, myNode)
Case 2
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 3
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 4
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
L4 = myNode.Parent.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L4).Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 5
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
L4 = myNode.Parent.Parent.Parent.Parent.Name
L5 = myNode.Parent.Parent.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L5).Nodes(L4).Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case Else
MessageBox.Show("Can Not Move Up Too Deep In Treeview", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Select
End If
End Sub
Private Sub btnDn_Click(sender As System.Object, e As System.EventArgs) Handles btnDn.Click
Dim myNode As TreeNode = Nothing
Dim i As Integer = 0
Dim x As Integer = 0
Dim L1 As String = String.Empty
Dim L2 As String = String.Empty
Dim L3 As String = String.Empty
Dim L4 As String = String.Empty
Dim L5 As String = String.Empty
If tvw1.SelectedNode.NextNode Is Nothing Then
MessageBox.Show("Unable To Move Down", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
Else
x = tvw1.SelectedNode.Level
i = tvw1.SelectedNode.NextNode.Index
Select Case x
Case 0
myNode = tvw1.SelectedNode
tvw1.Nodes.Remove(myNode)
tvw1.Nodes.Insert(i, myNode)
Case 1
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L1).Nodes.Insert(i, myNode)
Case 2
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 3
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 4
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
L4 = myNode.Parent.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L4).Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case 5
myNode = tvw1.SelectedNode
L1 = myNode.Parent.Name
L2 = myNode.Parent.Parent.Name
L3 = myNode.Parent.Parent.Parent.Name
L4 = myNode.Parent.Parent.Parent.Parent.Name
L5 = myNode.Parent.Parent.Parent.Parent.Parent.Name
tvw1.Nodes.Remove(myNode)
tvw1.Nodes(L5).Nodes(L4).Nodes(L3).Nodes(L2).Nodes(L1).Nodes.Insert(i, myNode)
Case Else
MessageBox.Show("Can Not Move Down Too Deep In Treeview", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Select
End If
End Sub
*** MOD EDIT **** Please use CODE tags.. It keeps the code formatting, and also frames it for easy identification, also it's allot easier to use than the Indent tags that you spread across the post...
Last edited by GremlinSA; December 13th, 2012 at 02:18 AM.
Reason: Please use code tags.....
-
December 12th, 2012, 06:51 PM
#9
Re: REORDER NODES IN A TREEVIEW
Do it the same way you'd re-order a stack of blocks. You can't add or remove from the middle. Usually easiest is to just create a new version.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|