2010-07-10 27 views
0

我希望用戶能夠將我的程序中的元素拖放到桌面上,以從中創建文件。將這些信息嵌入到DataObject中最簡單的方法是什麼,這樣Explorer可以接受丟棄並創建相應的文件?在拖動中嵌入(新)文件信息的最簡單方法是什麼?

我的拖放經驗是有限的,到目前爲止,我能想到的唯一方法是在臨時目錄中創建文件,並通過「FileDrop」的DataFormat將其路徑附加到DataObject中。但必須有更好的方法。

+0

我也發現這個:http://stackoverflow.com/questions/1845654/how-to-use-filegroupdescriptor-to-drag-file-to-explorer-c – devios1 2010-07-13 12:45:08

回答

1

基本上我所理解的你想要做的是從你的應用程序拖放一個不存在的文件到資源管理器,並創建一個物理文件。

那麼,您創建臨時文件然後在DataObject中設置它的解決方案可能是捷徑解決方案。

「正確」的解決方案,不創建臨時磁盤文件將需要大量的P/Invoke類型互操作來創建自定義IDataObject,可以從內存而不是物理源文件呈現文件描述符和內容。我在.NET中沒有這樣做,但我可以猜測這將是一個相當大的工作量。

+0

我明白了。我想臨時文件是更簡單的解決方案,然後...真正的問題是,我不想爲每個拖動操作創建一個文件,因爲不能保證用戶將拖放到資源管理器中。也就是說,大多數時候拖拽可能只是用來在程序之間移動數據(即文本和圖像)。爲每一個拖動創建一個文件似乎是一個很大的浪費,即使我可以設法以合理的方式清理它... – devios1 2010-07-10 15:41:19

+1

如果yu決定試一試,這裏是我剛剛遇到的一篇文章(http: //www.codeproject.com/KB/tips/ExplorerDelayDrop.aspx),它用於託管代碼,但使用'System.Runtime.InteropServices.ComTypes.IDataObject'作爲起點,我相信它可以在託管代碼中實現。 – 2010-07-10 18:48:39

相關問題