Outlook dragdrop feature is included in the latest Aspose.Network release, which enables
developers to easily create UI elements that respond to Outlook drag drop events.

The following sample shows how to create a panel, on which user can drag a message from
Outlook and drop it, and the program save that message(s) to .msg file(s).

Step 1. Create a windows form application

Step 2. Add reference to Aspose.Network

Browse for Aspose.Network.dll and Aspose.Windows.Forms.dll, and click ok

Step 3. Create your ui elements, in this sample, we create a panel in this sample. Right click
your project in the solution panel and choose “Add > new item”, create a class called
MyPanel:

Let MyPanel be a subclass of System.Windows.Form.Panel, and add a
Aspose.Windows.Forms.FileDropTargetManager property to MyPanel:

[C#]

using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
public class MyPanel:System.Windows.Forms.Panel
{

    private Aspose.Windows.Forms.FileDropTargetManager m;  
}  

}

[VB.NET]

Public Class MyPanel
Inherits System.Windows.Forms.Panel

Private m As Aspose.Windows.Forms.FileDropTargetManager

End Class

Step 4. Override OnHandleCreated and OnHandleDestroyed methods to register MyPanel
using Aspose.WindowsForms.FileDropTargetManager:

[C#]

public class MyPanel:System.Windows.Forms.Panel  
{  
    //hook up  
    protected override void OnHandleCreated(EventArgs e)  
    {  
        this.AllowDrop = true;  
        this.m = new Aspose.Windows.Forms.FileDropTargetManager(this);  
        this.m.EnsureRegistered(this);  
        base.OnHandleCreated(e);  
    }  
    //unhook  
    protected override void OnHandleDestroyed(EventArgs e)  
    {  
        this.m.EnsureUnRegistered(this);  
        base.OnHandleDestroyed(e);  
    }

    private Aspose.Windows.Forms.FileDropTargetManager m;  
}

[VB.NET]

Public Class MyPanel
Inherits System.Windows.Forms.Panel

'hook up  
Protected Overrides Sub OnHandleCreated(ByVal e As System.EventArgs)  
    Me.AllowDrop = True  
    m = New Aspose.Windows.Forms.FileDropTargetManager(Me)  
    m.EnsureRegistered(Me)  
    MyBase.OnHandleCreated(e)  
End Sub

'un hook  
Protected Overrides Sub OnHandleDestroyed(ByVal e As System.EventArgs)  
    m.EnsureUnRegistered(Me)  
    MyBase.OnHandleDestroyed(e)  
End Sub

Private m As Aspose.Windows.Forms.FileDropTargetManager

End Class

Step 5. Build the project. MyPanel is ready to use now. This panel will be able to accepts
drag and drop events from Outlook. Open your toolbox panel and drag MyPanel onto your
windows form:

Step 6. Add an event handler to MyPanel’s DragDrop event (don’t forget to set AllowDrop
property to true from the properties panel and change MyPanel’s BackColor to your favourite
):

Step 7: Implement the DragDrop event handler. we simply save those messages dragged from
outlook to files as .msg. First we cast DragEventArgs to
Aspose.Windows.Forms.FileDragEventArgs, which contains an array “Files” property
standing for user’s drag target. If user drag several messages from outlook and drop it onto
MyPanel, Files.Count will be the number of messges, and Files[ i ] ( or VB Files(i) ) stands
for each message.

[C#]

    private void myPanel1_DragDrop(object sender, DragEventArgs e)  
    {  
        Aspose.Windows.Forms.FileDragEventArgs args;  
        args = (Aspose.Windows.Forms.FileDragEventArgs)e;  
        if (args != null && args.Files.Count > 0)  
        {  
            for (int i = 0; i < args.Files.Count; i++)  
            {  
                SaveFileDialog dialog = new SaveFileDialog();  
                dialog.FileName = args.Files[ i ].FileName;  
                if (dialog.ShowDialog() == DialogResult.OK)  
                {  
                    try  
                    {  
                        System.IO.FileStream output;  
                        output = new System.IO.FileStream(dialog.FileName,  

System.IO.FileMode.CreateNew);
args.Files[ i ].Save(output);
MessageBox.Show(“Save success:” + dialog.FileName);
}
catch (Exception ex)
{
MessageBox.Show(“Save failed:” + ex.ToString());
}
}
}
}
}

[VB.NET]

Private Sub MyPanel1_DragDrop(ByVal sender As System.Object, ByVal e As  

System.Windows.Forms.DragEventArgs) Handles MyPanel1.DragDrop
Dim args As Aspose.Windows.Forms.FileDragEventArgs
args = TryCast(e, Aspose.Windows.Forms.FileDragEventArgs)
If (args IsNot Nothing) Then
If ((args.Files IsNot Nothing) AndAlso (args.Files.Count > 0)) Then
For i As Integer = 0 To args.Files.Count - 1
Dim saveDialog As New SaveFileDialog
saveDialog.FileName = args.Files(i).FileName
saveDialog.ShowDialog(Me)
Try
Dim fs As System.IO.FileStream = New
System.IO.FileStream(saveDialog.FileName, System.IO.FileMode.CreateNew)
args.Files(i).Save(fs)
fs.Close()
MessageBox.Show(“Save Success.” & args.Files(i).FileName)
Catch ex As Exception
MessageBox.Show(“Save Failed:” & ex.Message)
End Try
Next
End If
End If
End Sub

Step 8. Run the project and test it! Now you will be able to drag messages from outlook and
drop it to your application. the application will prompt you to save those messages to .msg
files: