he respondido a una pregunta similar con anterioridad: C# Drag and Drop - e.Data.GetData using a base class
Lo que puede hacer es crear una clase de recipiente que contiene los datos que se está arrastrando. Y luego, en GetDataPresent, comprueba el tipo de clase de contenedor y, si está presente, puede leer el miembro de contenido que contiene la instancia real de sus datos.
Aquí hay un ejemplo rápido, si su tipo base es DragDropBaseData, puede crear la siguiente clase DragDropInfo.
public class DragDropInfo
{
public DragDropBaseData Value { get; private set; }
public DragDropInfo(DragDropBaseData value)
{
this.Value= value;
}
}
Y entonces la caída de arrastre se puede iniciar con la siguiente, donde DrafDropDerivedData es una clase derivada de DragDropBaseData.
DoDragDrop(new DragDropInfo(new DragDropDerivedData()), DragDropEffects.All);
Y se puede acceder a los datos en los eventos de arrastre utilizando la siguiente
e.Data.GetData(typeof(DragDropInfo));
genial, gracias .. –
Gracias! La pregunta cubre mi problema exacto, ¡y la respuesta es una resolución perfecta! :) – mbmcavoy