Example of Drag and Drop using Files
I wrote a little example app that merges text files that you drag and dropped into the listview

Introduction
Well this is just a pretty straightforward example of how to create a drag and drop feature that can list the file paths of the files that were dragged into the listview
. Feel free to use it however you like... I hope this example helps some of the VB.NET developers.
Using the Code
There are really only two things that are needed to create a drag and drop feature...
First: You need to have a Private Sub
Method that is: "DragEnter
" and choose what kind of DataFormat
you wish to use... In this example, I chose FileDrop
. You also need to choose what kind of effect you want the drag and drop feature to do. For instance, I chose "copy
". You can choose whatever best fits with the type of application that you are designing.
Second: You will need to have a Private Sub
Method that is: "DragDrop
". This is where you want to specify what you want to do with the DataFormat
that was copied. Below are examples of the first and second sub
s that I used to create the drag and drop feature.
Private Sub lstFiles_DragEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DragEventArgs) Handles lstFiles.DragEnter
'SET THE PROPER ACTION FOR FILE DROP....BY USING THE FILEDROP METHOD TO COPY
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub lstFiles_DragDrop(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DragEventArgs) Handles lstFiles.DragDrop
'NOW THIS IS WHAT SHOULD TAKE PLACE FOR THE APP TO ADD THE TEXT FILE
' PATHS TO THE LIST VIEW ITEMS
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
Dim filePaths As String() = CType(e.Data.GetData_
(DataFormats.FileDrop), String())
For Each filePath As String In filePaths
Dim chkExt As String = _
My.Computer.FileSystem.GetFileInfo(filePath).Extension
'I'M STILL LEARNING SO PLEASE DON'T CRITISIZE ME TO BAD....
'THIS IS THE ONLY METHOD THAT I KNOW HOW TO CALCULATE THE FILE SIZE....
Dim chkSize As String = _
My.Computer.FileSystem.GetFileInfo(filePath).Length
chkSize = chkSize / 1024
'THIS IS WHAT I USED TO ROUND THE SIZE TO 2 DECIMAL POINTS...
Dim d As Decimal
d = Decimal.Round(chkSize, 2, MidpointRounding.AwayFromZero)
'THIS WILL ADD THE FILEPATHS AND THE FILES SIZE TO THE LIST VIEW
Dim LI As ListViewItem
LI = Me.lstFiles.Items.Add(filePath)
LI.StateImageIndex = 0
LI.SubItems.Add(d & " kb")
Next filePath
End If
End Sub
Points of Interest
Pretty simple really. I was just bored at the office and wanted something to do.
History
- 13th November, 2008: Initial post