Microsoft KB Archive/306969

= How to provide file drag-and-drop functionality in a Visual Basic 2005 or Visual Basic .NET application =

Article ID: 306969

Article Last Modified on 5/13/2007

-

APPLIES TO


 * Microsoft Visual Basic 2005
 * Microsoft Visual Basic .NET 2003 Standard Edition
 * Microsoft Visual Basic .NET 2002 Standard Edition

-



This article was previously published under Q306969





For a Microsoft Visual C# .NET version of this article, see 307966.



SUMMARY
The step-by-step procedure in this article demonstrates how to provide file drag-and-drop functionality in a Microsoft Visual Basic 2005 or Microsoft Visual Basic .NET application. A ListBox control is used as the destination of the file drag-and-drop procedure.

Requirements
The following list outlines the recommended hardware, software, network infrastructure, and service packs that you need:
 * Visual Basic 2005 or Visual Basic .NET

This article assumes that you are familiar with the following topics:
 * Windows Forms ListBox control
 * Windows Forms event handling

Steps to build the sample
The ListBox control provides two drag-and-drop events that you need to handle: DragEnter and DragDrop. The DragEnter event occurs when you drag an object within the bounds of the control and is used to determine whether the object that is being dragged is one that you want to allow to be dropped on the control. You handle this event for cases in which a file or files are dragged to the control. This allows the appropriate icon to be displayed when the object is dragged over the control, depending on the object that is being dragged. The DragDrop event occurs when the object that is being dragged has been released on the control. You handle this event to retrieve the object. The Data object is used to retrieve the data.

The Data object's GetData method returns an array of strings that contain the full path names of the files that were dragged to the ListBox control. You can use this file path information to perform whatever operations are needed on the files. For example, you can use classes in the System.IO namespace to open and read the files, move the files, or copy the files to a new location. This sample only adds the full path to the files that are dragged to the ListBox control.

To provide file drag-and-drop functionality in a Visual Basic 2005 or Visual Basic .NET application, follow these steps:  Create a new Windows Forms Application in Visual Basic 2005 or Visual Basic .NET. Form1 is created by default. Use the toolbox to add a ListBox control to Form1. In the Properties window, change the AllowDrop property of the ListBox control to True to allow objects to be dragged onto the control. In Solution Explorer, right-click Form1, and then click View Code.  To handle the DragEnter event, add the following method below the code section that the Windows Form Designer generates in the Form1 class: Private Sub ListBox1_DragEnter(ByVal sender As Object, _                                  ByVal e As System.Windows.Forms.DragEventArgs) _ Handles ListBox1.DragEnter If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then e.Effect = DragDropEffects.All Else e.Effect = DragDropEffects.None End If   End Sub   To handle the DragDrop event, add the following method to the Form1 class immediately following the method that you added in step 5: Private Sub ListBox1_DragDrop(ByVal sender As Object, _                                 ByVal e As System.Windows.Forms.DragEventArgs) _ Handles ListBox1.DragDrop Dim s As String = e.Data.GetData(&quot;FileDrop&quot;, False) Dim i As Integer For i = 0 To s.Length - 1 ListBox1.Items.Add(s(i)) Next i   End Sub </li> Build and run the project.</li> Drag one or more files from either the desktop or another folder to the ListBox control. Note that the full path of the files is added to the ListBox control.</li></ol>

<div class="references_section">