c# – 调用DoDragDrop方法后执行dragdrop实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 调用DoDragDrop方法后执行dragdrop实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1288字,纯文字阅读大概需要2分钟。
内容图文
![c# – 调用DoDragDrop方法后执行dragdrop实现](/upload/InfoBanner/zyjiaocheng/812/d0cfb36cd88e41cc9c14bc129a9fe011.jpg)
我一直在努力解决这个问题
我的应用程序包含一个列表视图,填充了文件名,位于服务器上.
我正在尝试实现拖放功能,因此用户可以将文件从我的应用程序拖到他/她的本地计算机中.
为了做到这一点,首先我将文件下载到一个临时位置,然后调用我的应用程序的DoDragDrop()方法.
问题是我想在调用DoDragDrop方法之后才执行下载过程.
我已经尝试过与拖放方法相关的每个事件(GiveFeedback,ItemDrag等等),但没有任何效果
基本上我需要的是一个事件,在DoDragDrop完成后引发
有任何想法吗??
解决方法:
不确定如何在.NET中执行此操作,但在常规Win32编程中,实现IDataObject接口的对象也可以选择实现IAsyncOperation接口.然后,IDropTarget可以使用该接口在后台线程中执行drag-n-drop,以便在实际传输期间不阻止源和目标.唯一的问题是目标而不是来源决定是否利用这一点.
另一种方法是使用“优化移动”传输,其中IDataObject提供文件名,IDropTarget直接移动文件.
MSDN有详细说明:Handling Shell Data Transfer Scenarios.
当然,这仍然意味着您必须在开始拖放之前下载文件.实际上没有办法执行drag-n-drop来确定目标,然后再执行下载.但是,你可以做的是让IDataObject保存CFSTR_FILEDESCRIPTOR和CFSTR_FILECONTENTS条目(在此描述:Shell Clipboard Formats),其中CFSTR_FILEDESCRIPTOR填入你用来填充ListView的信息,而CFSTR_FILECONTENTS使用IStream接口,其实现执行下载期间实际的下降操作而不是之前的操作.至少就是这样,你只是下载目标实际想要的文件,可以跳过其余的.
结合IAsyncOperation,这可能会给你最终的效果.
内容总结
以上是互联网集市为您收集整理的c# – 调用DoDragDrop方法后执行dragdrop实现全部内容,希望文章能够帮你解决c# – 调用DoDragDrop方法后执行dragdrop实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。