2009-11-20 5 views
1

L'application que je développe est une application de formulaire Windows écrite en C#. Il a une vue d'arbre dessus. Chacun des treeNode stocke certaines données. Ce que je veux faire est d'ouvrir deux copies de l'application, faites glisser certains des codes d'une application et déposez-les dans une autre. Les données stockées dans le magasin de données doivent être transférées à une autre application pour construire des codes sur une autre application. Je me demande comment implémenter la fonctionnalité glisser-déposer comme ça? Merci de votre aide.Comment commencer à implémenter un glisser-déposer entre différents processus?

+0

Je travaille sur une solution similaire pour un 3ème. partie treeview. Au moment de la chute dans un contrôle de exactement le même type dans une autre instance d'une application en cours d'exécution: vous avez un "proxy". J'espère trouver une façon non-API pour "déréférencer" le proxy, et obtenir ses données dans le contrôle Dropped on. Je pensais que j'avais une solution, mais il s'est avéré impossible de la mettre en œuvre (par moi, de toute façon). Vous pouvez "obtenir quelque chose" de la réponse par Groo ici à une question que j'ai soulevée http://stackoverflow.com/questions/1699504/c-detect-desktop-folder-mouse-up-during-a-drag-operation, – BillW

+0

En fait, lorsque vous faites glisser le treenode, il doit définir l'objet sous-jacent. Lors de la suppression du todeode, les données sous-jacentes doivent être extraites pour construire le nouveau todeode. – telescope

Répondre

1

Je pense que si vous marquez vos types comme [Serializable] ET implémenter la sérialisation personnalisée, cela devrait fonctionner. Sinon, vous pouvez les sérialiser vous-même dans un MemoryStream, puis ajouter ce MemoryStream à l'objet de données à l'aide de n'importe quel format de données personnalisé.

+0

Pourriez-vous expliquer le tout plus en détails? Si je les ai sérialisés dans un flux de mémoire lors du déplacement, puis-je obtenir des données du flux de mémoire lors d'un autre processus? – telescope

+1

Oui, ajoutez-le à l'objet de données source avant d'appeler DoDragDrop. Dans l'événement DragEnter/DragOver/DragDrop de la cible, supprimez ces données. Assurez-vous de spécifier le même format de données que vous avez utilisé lors de l'ajout des données. – logicnp

Questions connexes