/// <summary>
/// Performs a default drag and drop operation for the specified drag source.
/// </summary>
/// <param name="control">The drag source Control.</param>
/// <param name="dataObject">The data object associated to the drag and drop operation.</param>
/// <param name="allowedEffects">The allowed drop effects.</param>
/// <param name="data">The associated data.</param>
/// <returns>The accepted drop effects from the completed operation.</returns>
private static DragDropEffects DoDragDropInternal(Control control, IDataObject dataObject, DragDropEffects allowedEffects, KeyValuePair <string, object>[] data)
{
// Set the data onto the data object.
if (data != null)
{
foreach (KeyValuePair <string, object> dataPair in data)
{
dataObject.SetDataEx(dataPair.Key, dataPair.Value);
}
}
try
{
return(control.DoDragDrop(dataObject, allowedEffects));
}
finally
{
UnregisterDefaultDragSource(control);
}
}