Ich versuche, eine träge Drag & Drop-Operation zu implementieren. Ich möchte meinem Benutzer eine Listview mit Dateien zeigen, wenn der Benutzer eine Datei zieht und in einen Ordner legt, der Inhalt heruntergeladen und zugestellt werden soll.Implement faul drag & drop
Ich benutze die IDataObject Schnittstelle, aber mein Problem ist, dass die GetData() Methode viel zu früh abgefragt wird. Zum Beispiel wird ein Ziehen über den Desktop (ohne jeglichen involvierten Tropfen) die Methode GetData() ein paar Mal abfragen. Und jeder dieser Aufrufe startet den Download der Datei:/
Jetzt ist meine Frage: Was ist hier falsch - warum wird die GetData() Methode ohne jeden Tropfen aufgerufen? Gibt es eine andere Möglichkeit zum Implementieren von Lazy Drag & Drop-Operationen in .net?
Das Problem, das Sie haben werden, ist für das Drop-Ereignis im Explorer, wo Sie den Download starten möchten. Sie können dies per Drag-Drop auf ein anderes Steuerelement in Ihrem Formular überprüfen, das Sie beim Drop-Ereignis von abonnieren können. –
Ja, das könnte mir helfen, aber es klingt viel komplizierter und bindet mich nur an den Explorer. Andere Targets, die Dateidrops normalerweise akzeptieren, können die Daten nicht abrufen. In der Theorie sollte das Drop-Ereignis * IDataObject.GetData() * aufrufen - und nur so sollte es sein. Dann kann ich die Daten liefern (direkt oder per Download). Es gibt jedoch Aufrufe zu diesen Funktionen ohne einen involvierten Abfall, was diesen Ansatz unbrauchbar macht. – tanascius
Gibt es keine Möglichkeit, den Download zu verzögern, bis das empfangende Ende tatsächlich fragt, um die Bytes zu sehen? –