【发布时间】:2010-09-14 12:56:05
【问题描述】:
我正在尝试实现延迟拖放操作。我想向我的用户显示一个包含文件的列表视图,当用户将文件拖放到文件夹中时,应该下载并交付内容。
我正在使用IDataObject 接口,但我的问题是GetData() 方法查询得太早了。例如,在桌面上拖动(不涉及任何拖放)将查询 GetData() 方法几次。这些调用中的每一个都开始下载文件:/
现在,我的问题是:这里出了什么问题 - 为什么调用 GetData() 方法时没有任何丢弃? .net 中是否有另一种实现延迟拖放操作的方法?
【问题讨论】:
-
您将遇到的问题是在资源管理器中监听 drop 事件,这是您想要启动下载的时候。您可以通过拖放到表单中的另一个控件上来验证这一点,您将能够订阅它的 drop 事件。
-
是的,这可以帮助我,但它听起来要复杂得多,并且只将我的 drop 绑定到 explorer。其他正常接受文件删除的目标将无法获取数据。理论上,drop 事件应该调用 IDataObject.GetData() - 只有它应该这样做。然后我可以提供数据(直接或通过下载)。然而,在调用这个函数时没有涉及到 drop,这使得这种方法无法使用。
-
有没有办法延迟下载,直到接收端真正要求查看字节?
标签: c# drag-and-drop lazy-evaluation