ho risposto a una domanda simile in precedenza: C# Drag and Drop - e.Data.GetData using a base class
Che cosa si può fare è creare una classe contenitore che contiene i dati che si sta trascinando. Quindi, nel GetDataPresent, si controlla il tipo di classe del contenitore e, se è presente, è possibile leggere il membro del contenuto che contiene l'istanza effettiva dei dati.
Ecco un breve esempio, se il tipo di base è DragDropBaseData, è possibile creare la seguente classe DragDropInfo.
public class DragDropInfo
{
public DragDropBaseData Value { get; private set; }
public DragDropInfo(DragDropBaseData value)
{
this.Value= value;
}
}
E poi la caduta di trascinamento può essere avviata con il seguente, dove DrafDropDerivedData è una classe derivata da DragDropBaseData.
DoDragDrop(new DragDropInfo(new DragDropDerivedData()), DragDropEffects.All);
E si può accedere ai dati negli eventi di trascinamento con la seguente
e.Data.GetData(typeof(DragDropInfo));
fonte
2011-09-10 09:10:21
Grande, grazie .. –
Grazie! La domanda copre il mio problema esatto e la risposta è una risoluzione perfetta! :) – mbmcavoy