How to DragDrop and Copy the Nodes in a TreeView in VB.Net

How to DragDrop and Copy the Nodes in a TreeView in VB.Net

This tutorial is all about How to DragDrop and Copy the Nodes in a TreeView in VB.Net.
In this tutorial, I will show you how to drag, drop and copy the “nodes” in a Treeview using Visual Basic 2008.

I made this to show you not only a PictureBox or a TextBox can be drag and drop but also a “nodes” in a treeview.

What is Visual Basic’s purpose?

The third-generation programming language was created to aid developers in the creation of Windows applications.

It has a programming environment that allows programmers to write code in.exe or executable files.

They can also utilize it to create in-house front-end solutions for interacting with huge databases.

It is because the language allows for continuing changes, you can keep coding and revising your work as needed.

However, there are some limits to the Microsoft Visual Basic download.

If you want to make applications that take a long time to process, this software isn’t for you.

That implies you won’t be able to use VB to create games or large apps because the system’s graphic interface requires a lot of memory and space.

Furthermore, the language is limited to Microsoft and does not support other operating systems.

What are the most important characteristics of Visual Basic?

Microsoft Visual Basic for Applications Download, unlike other programming languages, allows for speedier app creation.

It has string processing capabilities and is compatible with C++, MFC, and F#. Multi-targeting and the Windows Presentation Framework are also supported by the system, allowing developers to create a variety of Windows apps, desktop tools, metro-style programs, and hardware drivers.

Let’s begin:

Open Visual Basic 2008, create a new Windows Form Application and drag the two Treeview in the Form. Name it “trview_left” and “trview_right”.

drgdroptreeview_form1

After that, click the two Treeviews and go to the properties.

In the properties, click the events that look like a lightning symbol and double click the Drag/Drop event handler. And do this following code.

Declare this constant variable above the sub procedure.

[vbnet]
‘DECLARE A CONSTANT VARIABLE
‘IT IS USED FOR DETECTING THE CTRL KEY WHETHER THE CTRL KEY WAS PRESSED OR NOT DURING THE DRAG OPERATION
Const mask_ctrl As Int32 = 8
[/vbnet]

[vbnet]
Private Sub TreeView_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles trview_left.DragDrop, trview_right.DragDrop

‘SET A VARIABLE TO HOLDS THE NODE TO BE DRAGGED
Dim nodeorigination As TreeNode = CType(e.Data.GetData(“System.Windows.Forms.TreeNode”), TreeNode)

‘GETDATAPRESENT IS A BIT DIFFERENT FROM A TREEVIEW AND PICTUREBOX CONTROL.
‘THE TREENODE IS NOT INCLUDED IN THE DATAFORMATS CLASS. THAT’S WHY IT’S NOT A PREDEFINED TYPE
‘ONE OF THE GETDATAPRESENT CONTAINS A STRING THAT SPECIFY THE TYPE.
If e.Data.GetDataPresent(“System.Windows.Forms.TreeNode”, False) Then
Dim pnt As Point
Dim distination_node As TreeNode

‘POINTTOCLIENT IS USED TO COMPUTE THE LOCATION OF THE MOUSE OVER THE DESTINATION TREEVIEW
pnt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
‘POINT IS USED TO GET THE CLOSEST NODE IN THE DESTINATION TREEVIEW
distination_node = CType(sender, TreeView).GetNodeAt(pnt)

‘IF THE NEW NODE WAS NOT DROPPED DIRECTLY AT THE TOP OF THE NODE,
‘THEN THE RESULT OF THE DESTINATIONNODE WILL BE NOTHING
If distination_node IsNot Nothing Then
‘IF THE ORIGINAL NODE AND DISTINATION NODE ARE THE SAME, THE THE NODE WOULD DISAPPEAR.
‘THIS CODE INSURES THAT IT WILL NOT HAPPEN.
If Not distination_node.TreeView Is nodeorigination.TreeView Then
distination_node.Nodes.Add(CType(nodeorigination.Clone, TreeNode))
‘EMPHASIZE PARENT NOT WHEN ADDING THE NEW NODE, WITHOUT THIS , ONLY THE a+ SYMBOL WILL APPEAR.
distination_node.Expand()

If (e.KeyState And maskctrl) maskctrl Then ‘CHECKING THE CTRL KEY WAS NOT PRESSED
nodeorigination.Remove() ‘REMOVE THE NODE
End If
End If
End If
End If
End Sub

[/vbnet]

Then, click the method name and choose the Drag/Enter events handler, and do this following code.

[vbnet]
Private Sub TreeView_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles trview_left.DragEnter, trview_right.DragEnter

If (e.Data.GetDataPresent(“System.Windows.Forms.TreeNode”)) Then ‘CHECKING THE DRAG CONTENT TO BE SURE THAT IT IS THE CORRECT TYPE.

If (e.KeyState And maskctrl) = maskctrl Then ‘CHECKINKG IF THE CTRL KEY WAS PRESSED.
‘IF IT WAS PRESSED
e.Effect = DragDropEffects.Copy ‘PERFORM COPY
Else
‘IF IT WAS NOT PRESSED
e.Effect = DragDropEffects.Move ‘PERFORM A MOVE
End If
Else
‘REJECT THE DROP
e.Effect = DragDropEffects.None
End If
End Sub

[/vbnet]

Go back to the method name again and choose the Item/Drag event handler and do this following code.

[vbnet]
Private Sub TreeView_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles trview_left.ItemDrag, trview_right.ItemDrag
If e.Button = Windows.Forms.MouseButtons.Left Then
‘PERFORM THE DRAG AND DROP OPERATION.
DoDragDrop(e.Item, DragDropEffects.Move Or DragDropEffects.Copy)
End If
End Sub
[/vbnet]

You can download the complete source here

Readers might read also:

1 thought on “How to DragDrop and Copy the Nodes in a TreeView in VB.Net”

Leave a Comment