【问题标题】:What's the simplest way to embed (new) file information in a drag?在拖动中嵌入(新)文件信息的最简单方法是什么?
【发布时间】:2010-07-10 15:02:40
【问题描述】:

我希望用户能够将我的程序中的元素拖到桌面上以从中创建文件。将此信息嵌入 DataObject 以便资源管理器接受丢弃并创建适当文件的最简单方法是什么?

我的拖放经验是有限的,到目前为止,我能想到的唯一方法是在临时目录中实际创建文件,并通过“FileDrop”的 DataFormat 将它们的路径附加到 DataObject...但是一定有更好的办法。

【问题讨论】:

标签: c# .net file drag-and-drop


【解决方案1】:

基本上我理解你想要做的是将一个不存在的文件从你的应用程序拖到资源管理器并创建一个物理文件。

好吧,您创建一个临时文件然后在 DataObject 中设置它的解决方案可能是捷径解决方案。

不创建临时磁盘文件的“正确”解决方案将需要大量 P/Invoke 类型互操作来创建自定义 IDataObject,该 IDataObject 可以从内存而不是物理源文件呈现文件描述符和内容。我没有在 .NET 中做过这个,但我猜想这将是相当多的工作。

【讨论】:

  • 我明白了。我想临时文件是更简单的解决方案......真正的问题是我真的不想为每个拖动操作创建一个文件,因为不能保证用户会将拖动放在资源管理器中。也就是说,大多数时候拖动可能只是用于在程序之间移动数据(即文本和图像)。为每次拖动创建一个文件似乎很浪费,即使我可以设法以合理的方式清理它......
  • 如果你决定试一试,这是我刚看到的一篇文章 (codeproject.com/KB/tips/ExplorerDelayDrop.aspx),它用于托管代码,但使用 'System.Runtime.InteropServices.ComTypes.IDataObject'作为一个起点,我相信它可以在托管代码中实现。
猜你喜欢
  • 2019-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2018-09-28
相关资源
最近更新 更多