J'essaie d'obtenir des fonctionnalités similaires à winzip/winrar, etc. J'ai un Treeview
qui affiche le contenu d'un package (System.IO.Packaging). Je veux être en mesure de glisser et déposer un fichier ou un dossier à partir du TreeView
sur une fenêtre de l'explorateur ou le bureau, etc. Mon problème est que je dois appeler DoDragDrop
avant de savoir si l'objet a même été abandonné. Cela signifie que pour créer le DataObject
avec le type FileDrop
, je dois extraire ces contenus du package dans une zone temporaire, puis fournir ce chemin à DataObject avant d'appeler DoDragDrop
. Si l'utilisateur ne tombe pas sur un conteneur capable ou annule la baisse, le surcoût d'extraction de ces contenus est gaspillé. J'ai remarqué que winzip ne crée pas le fichier temporaire tant que la chute n'a pas eu lieu sur une cible valide. J'ai vérifié les DataFormats fournis par le drop WinZip et ils sont FileDrop normal, FileNameW, FileName et Shell IDList Array. Les trois premiers contiennent simplement une chaîne à l'emplacement temporaire que WinZip a extrait de ce fichier. Je ne suis pas sûr de ce que fait le dernier. Longue histoire courte, je veux être en mesure d'éviter d'extraire le contenu jusqu'à ce que je sais que l'emplacement de la goutte était valide. Y a-t-il un rappel pour déterminer l'emplacement du dépôt? Toute suggestion serait extrêmement utile.Fonctionnalité de glisser-déposer C#
System.Windows.DragDropEffects de = DragDrop.DoDragDrop(treeview1, dataObj, System.Windows.DragDropEffects.Move);
J'étais dans le même bateau, j'ai d'abord concédée et a commencé à faire le FolderTree embarqué aussi, mais ça allait seulement être une solution temporaire. Merci quand même pour le conseil. –