【问题标题】:How to start to implement a drag and drop between different processes?如何开始实现不同进程之间的拖放?
【发布时间】:2009-11-20 02:52:15
【问题描述】:

我正在开发的应用程序是一个用 C# 编写的 Windows 窗体应用程序。它上面有一个树视图。每个 treeNode 存储一些数据。我想要做的是打开应用程序的两个副本,将一些树节点从一个应用程序拖放到另一个应用程序。树节点存储的数据应传输到另一个应用程序以在另一个应用程序上构建树节点。我想知道如何实现这样的拖放功能?谢谢你的帮助。

【问题讨论】:

  • 我正在为 3rd 制定类似的解决方案。派对树视图。在正在运行的应用程序的另一个实例中拖放到完全相同类型的控件中的那一刻:您有一个“代理”。我希望找到一种非 API 方式来“取消引用”代理,并将其数据放入 Dropped on control 中。我以为我有一个解决方案,但事实证明它无法实施(无论如何,由我实施)。您可以从 Groo 在这里对我提出的问题的回答“得到一些东西”stackoverflow.com/questions/1699504/…best,
  • 其实拖拽treenode的时候,应该设置底层对象。删除树节点时,应提取底层数据以构建新的树节点。

标签: c# winforms drag-and-drop interprocess


【解决方案1】:

我认为,如果您将类型标记为 [Serializable] 并实现自定义序列化,它应该可以工作。否则,您可以自己将它们序列化为 MemoryStream,然后使用任何自定义数据格式将该 MemoryStream 添加到数据对象中。

【讨论】:

  • 您能详细解释一下吗?如果我在拖拽的时候将它们序列化到内存流中,那么我可以在拖放到另一个进程时从内存流中获取数据吗?
  • 是的,在调用 DoDragDrop 之前将其添加到源数据对象中。在目标的 DragEnter/DragOver/DragDrop 事件中,检索此数据。请务必指定添加数据时使用的相同数据格式。
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 2010-11-05
  • 2011-06-01
  • 2012-02-02
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多